摘要: 定义:允许对象在状态改变时改变它的行为,对象看起来好像修改了它的类。 类图 状态模式和策略模式 状态模式和策略模式的类图一样,本质上都是针对对象行为进行封装,区别在于其不同的“意图” 策略模式用于给Context对象选择最合适的行为。 状态模式主要在于处理Context对象在运行过程中的不同状态下所 阅读全文
posted @ 2020-02-26 21:51 Camcay 阅读(177) 评论(0) 推荐(0)
摘要: 定义:将对象组合成树形结构来表示“整体/部分”的层次机构。让客户以一致性的方式处理个别对象和组合对象。 类图: 示例 package composite; import java.util.List; public class Menu { private String menuName; priv 阅读全文
posted @ 2020-02-26 18:04 Camcay 阅读(188) 评论(0) 推荐(0)
摘要: 定义:提供一种方法,顺序访问聚合对象中的各个元素,而又不暴露其内部的表示。 类图 示例 public class Book { private String name; private String author; public Book(String name, String author) { 阅读全文
posted @ 2020-02-26 09:51 Camcay 阅读(135) 评论(0) 推荐(0)
摘要: 定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 类图 示例 public abstract class GameTemplate { final void playGame(){ startGame(); pl 阅读全文
posted @ 2020-02-25 10:32 Camcay 阅读(120) 评论(0) 推荐(0)
摘要: 定义:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 类图 示例 //子系统类 public class Light { void lightOff(){ System.out.println("关闭电灯"); } } //子系统类 public cl 阅读全文
posted @ 2020-02-25 09:49 Camcay 阅读(79) 评论(0) 推荐(0)
摘要: 定义:将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。 类图 示例 //用户的目标接口 public interface Duck { void quack(); } //被适配者 public class Chicken { public void crow() 阅读全文
posted @ 2020-02-24 21:12 Camcay 阅读(99) 评论(0) 推荐(0)
摘要: 定义:将请求封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作 类图 示例 //Receiver public class Light { public void lightOn(){ System.out.println("开灯!"); } public vo 阅读全文
posted @ 2020-02-24 18:27 Camcay 阅读(114) 评论(0) 推荐(0)
摘要: 定义:确保一个类只有一个实例,并提供一个全局访问点。 类图 实现方式 懒加载:线程安全,调用getInstance时才加载,节省内存,缺点是性能较差,同步几乎只在第一次创建对象时需要。 public class Singleton { private static Singleton instanc 阅读全文
posted @ 2020-02-24 10:52 Camcay 阅读(112) 评论(0) 推荐(0)
摘要: 定义:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 类图 Component:装饰者和被装饰者实现的公共接口 ConcreteComponent:被装饰者,可以单独使用,也可以被装饰者包装之后使用 Decorator:装饰者继承的抽象类,持有被装饰者的引用 Conc 阅读全文
posted @ 2020-02-19 17:16 Camcay 阅读(121) 评论(0) 推荐(0)
摘要: 定义:定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新。 类图 ​ Subject:所有具体主题的公共接口,包含注册观察者(订阅),移除观察者(取消订阅),通知观察者(消息更新) ConcreteSubject:具体的主题,可以通过setState设置状态变化调 阅读全文
posted @ 2020-02-19 13:55 Camcay 阅读(118) 评论(0) 推荐(0)