设计模式
请叫我猿叔叔
慢慢积累 向着架构进发
展开
-
模板方法模式
一. 定义 模板方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。二. 模式起源三. 原则3.1 好莱坞原则 别调用我们,我们会调用你。四. UML图 五. 代码5.1 饮料类(模板方法类)package model.method; /** * 饮料类 */...原创 2018-04-18 23:14:12 · 166 阅读 · 0 评论 -
工厂模式
一. 定义 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。二. 模式起源三. 设计原则四. UML图五. 代码5.1 水果父类package model.factory; /** * 水果父类 */ public abstract class Fruit { /** * 展示是哪种水果 *...原创 2018-04-04 23:15:42 · 151 阅读 · 0 评论 -
外观模式
一. 定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。二. 模式起源三. 原则3.1 原则1 最少知识原则: 减少对象之间的交互,只和你的“密友”谈话。四. UML图五. 代码5.1 爆米花机类package model.facade; /** * 爆米花类 */ public class Popcor...原创 2018-04-16 23:09:13 · 116 阅读 · 0 评论 -
简单工厂模式
一. 定义 简单工厂其实并不是一个设计模式,说它是一种良好的编程规范更为合适。它将创建对象的代码和业务逻辑的代码相互隔离开来,增加了程序的松耦合效果。二. 模式起源三. 设计原则 封装变化。四. UML图五. 代码5.1 水果类package model.simpleFactory; /** * 水果类 */ public abstract class Fruit {...原创 2018-04-03 23:42:57 · 168 阅读 · 0 评论 -
命令模式
一. 定义 命令模式将请求封装成对象,这可以让你使用不同的请求、队列或者日志请求来参数化其它对象。命令模式也可以支持撤销操作。二. 模式起源三. 设计原则四. UML图五. 代码5.1 Receiver类: 灯package model.command; public class Light { public void on() { System.out...原创 2018-04-11 00:05:06 · 107 阅读 · 0 评论 -
适配器模式
一. 定义 适配器模式将一个类的接口,转换为客户期望的另一种接口。适配器让原本不兼容的类可以合作无间。二. 模式起源三. 设计原则四. UML图 五. 代码5.1 鸭子接口package model.adapter; /** * 鸭子接口 */ public interface Duck { /** * 呱呱叫方法 */ public a...原创 2018-04-15 23:05:00 · 205 阅读 · 0 评论 -
策略设计模式
一. 定义 策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的用户。二. 模式起源三. 设计原则 3.1 原则1 把会变的部分取出并封装起来,以便以后可以轻易地改动或扩充此部分,而不影响不会变化 的部分。3.2 原则2 使用多态,针对接口编程,而非针对实现编程。3.3 原则3 多用组合,少用继承。四. UML图 五....原创 2018-03-27 23:32:42 · 219 阅读 · 0 评论 -
装饰者设计模式
一. 定义 装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。二. 模式起源三. 设计原则3.1 原则1 对扩展开放,对修改关闭。四. UML图五. 代码5.1 饮料父类package model.wrap; /** * 饮料父类 */ public abstract class Beverage { String de...原创 2018-04-01 23:48:23 · 153 阅读 · 0 评论 -
观察者设计模式
一. 定义 观察者模式定义了对象之间的一对多依赖,这样依一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。二. 模式起源三. 设计原则3.1 原则1 为了交互对象之间的松耦合设计。四. UML图五.代码package model.observer; /** * 主题接口 */ public interface Subject { /** * 订...原创 2018-03-31 22:03:18 · 164 阅读 · 0 评论 -
单例模式
一. 定义 单例模式确保一个类只有一个实例,并提供全局访问点。二. 模式起源三. 设计原则四. UML图五. 代码5.1 饿汉式package model.single; /** * 饿汉式 */ public class StarvingSingleton { private static StarvingSingleton instance = new Star...原创 2018-04-07 21:16:43 · 122 阅读 · 0 评论 -
状态模式
一. 定义 允许对象在内部状态改变的时改变它的行为,对象看起来好像修改了它的类。二. 模式起源三. 原则四. UML图五. 代码5.1 自动饮料售货机类package model.state; /** * 自动饮料售货机类 */ public class DrinkMachine { private State noMoneyState; private St...原创 2018-04-25 22:19:51 · 147 阅读 · 0 评论