外观模式 Facade模式 为一组具有相似功能的类群,比如类库、子系统等等,提供一个一致的简单的界面 代码分析 /** * 子系统 A */ public class SystemA { public void doSomeThing(){ System.out.println("这是A系统的功能..."); } } /** * 子系统 B */ public class SystemB { public void doSomeThing(){ System.out.println("…
外观模式 Facade模式 为一组具有相似功能的类群,比如类库、子系统等等,提供一个一致的简单的界面 代码分析 /** * 子系统 A */ public class SystemA { public void doSomeThing(){ System.out.println("这是A系统的功能..."); } } /** * 子系统 B */ public class SystemB { public void doSomeThing(){ System.out.println("…
代理模式 Proxy模式 结构型模式之一 十分简单 为其他对象提供一种代理(Proxy)以来控制对这个对象的访问 所谓代理,是指具有与代理元(被代理的对象)具有相同的接口或类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理 实现 public interface Subject { void sellBook(); } public class RealSubject implements Subject{ @Override public void sellBoo…
享元模式 FlyWeight 结构型模式之一 通过与其他类似对象共享数据来减少内存的占用 代码实现 public class Person { public Person(String name, int age, String sex) { this.name = name; this.age = age; this.sex = sex; } String name; int age; String sex; } public class Teacher extends Person{ public void s…
观察者模式 Observer 行为模式之一 当一个对象状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态 Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖他的其他对象之间保持状态同步 在Java中想要一个类成为被观察者,需要去继承Observable, 即被观察者是继承Observable的任何对象 观察者是实现Observer接口的任何对象 Java提供了较为方便的Observer和Observable供我们去实现观察者模式, 其实它本质还是基于容器的实现,即当一个对象是被观察者时,…
In addition to the local variables and operand stack, the Java stack frame includes data to support constant pool resolution, normal method return, and exception dispatch. This data is stored in the frame data portion of the Java stack frame. 除了局部变量区和操作数栈外,Jav…
行为型模式 策略模式 Strategy 行为模式之一 对一系列的算法加以封装,为所有的算法定义一个抽象的算法接口,并且通过继承该抽象算法对所有的算法加以封装和实现,具体的算法选择由客户端来选择(策略) Strategy模式主要用来平滑地处理算法的切换 public interface Strategy { void encrypt(); } public class Md5Strategy implements Strategy{ @Override public void encrypt() { System.o…
队列 队列是一个有序列表,可以用数组或链表来实现 基于数组来模拟队列 对头front,随数据输出而改变 对尾rear,随数据的输入而改变 实现思路 存入一个数据 将尾指针rear往后移,当front == rear 时,队列为空 如果尾部指针rear 小于队列的最大下标 maxSize-1,则将数据存入rear所指的数组元素中,否则将无法存入数据 代码实现 public class ArrayQueueDemo { public static void main(String[] args) { ArrayQueu…
装饰模式 Decorator 包装模式 通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案 先来看看传统的通过继承来扩展对象功能的方式 代码 public interface Car { void show(); void run(); } public class FlyCar implements Car{ @Override public void run() { System.out.println("可以跑"); } @Override public void sho…
对象创建型模式 建造者模式 生成器模式 对象创建型模式之一 用来隐藏复合对象的创建过程,把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象 为什么会有这么模式呢? 当一个类的内部数据过于复杂的时候,要创建的话可能就需要了解这个类的内部数据,以及这些东西是怎样组织装配之类的,学习成本过高且较为混乱,这时候 就需要一个法子来管理下这个类中的数据,以至于不那么混乱,怎么让它在创建时不那么混乱且代码的可读性较好,不至于看花了眼,且自己想要的东西都能很好地进行创建设置呢?这便是建造者模式的应…
非线性结构 数据元素之间不一定都是一一对应的关系 二维数组 可以用矩阵来表示,两个或者多个下标值对应一个值,是多对一的关系,虽然实际存储时仍然是顺序存储的,但从逻辑上来讲已经不是线性结构了 稀疏数组 SparseArray 实际应用需求 编写五子棋程序中,有存盘退出和续上盘的功能 分析问题: 该二维数组中很多值都是默认值0,因此记录了很多没有意义的数据 --> 稀疏数组 稀疏数组实际上对二维数组的进一步压缩 当一个数组中大部分元素为0,或者为同一个值的元素时,可以使用稀疏数组来保存该数组 稀疏数组实际上是行数…
操作数栈 Operand Stack 也叫表达式栈 Expression Stack 栈可以用数组或者链表来实现 操作数栈,在方法的执行过程中,根据字节码指令,往栈中写入数据或读取数据,即入栈push和出栈pop 实际上这个过程是借助于执行引擎来完成的 Java虚拟机中解释引擎是基于栈的执行引擎,其中栈指的便是操作数栈 操作数栈,主要用来存储计算的中间结果,也作为计算过程中变量临时的存储空间 操作数栈,就是JVM执行引擎的一个工作区,当一个方法刚开始执行(被调用)时,一个新的栈帧就会被创建出来,但此时这个方法的…
原型模式 Prototype 是一种对象创建型模式 采用复制原型对象的方法来创建对象的实例,使用Prototype模式创建的实例,具有与原型一样的数据 由原型对象自身创建目标对象,换句话说,对象创建这一动作发自原型对象本身 目标对象是原型对象的一个克隆 根据对象克隆深度的不同,有浅度克隆与深度克隆 浅度克隆 那么原型模式是怎么由来的呢? 举个小案例 /** * 原型模式 */ public class Prototype { public String getName() { return name; } publ…
局部变量表 也称局部变量数组或本地变量表 定义一个数字数组(一维),主要用来存储方法参数和定义在方法体内的局部变量 最基本单位:Slot 变量槽 这些数据类型包括 基本数字类型 对象引用 (reference) returnAddress类型 在局部变量表里,32位以内的类型只占用一个slot(包括returnAddress类型),64位的类型(long和double)占用两个slot byte、short、char在存储前都会转成int,boolean也被转成int,0表示false,1表示true long和d…
COPYRIGHT © 2020 良夜的博客. ALL RIGHTS RESERVED.
This blog has been running:
本站由
This site is protected by wp-copyrightpro.com