摘要: import java.util.ArrayList; import java.util.List; /** * 观察者模式 * @author TMAC-J * 牵一发而动全身来形容观察者模式在合适不过了 * 分为拉模式和推模式,这里不详细说了 */ public class ObserverPattern { interface IObserved{ ... 阅读全文
posted @ 2016-12-28 18:11 麦子TMAC 阅读(190) 评论(0) 推荐(0) 编辑
摘要: /** * 模块模式 * @author TMAC-J * 将一个完整的算法分离,分成不同的模块 * 用于有很多步骤的时候,可能以后这些步骤还会增加,把这些步骤分离 * 将有共性的部分放在抽象类中 * 避免代码重复 * 有利于算法扩展 * 假设这个算法是人,人具有的共性是早上起来穿衣服,吃饭,工作 */ public class TemplateMethod { ... 阅读全文
posted @ 2016-12-28 17:50 麦子TMAC 阅读(197) 评论(0) 推荐(0) 编辑
摘要: /** * 策略模式 * @author TMAC-J * 根据环境的不同选择不同的策略,把策略用接口抽象出来 */ public class StrategyPattern { interface Strategy{ void operate(); } public class StrategyA implements Str... 阅读全文
posted @ 2016-12-28 17:30 麦子TMAC 阅读(142) 评论(0) 推荐(0) 编辑
摘要: import java.util.Hashtable; /** * 享元模式 * @author TMAC-J * 享元模式一般和工厂模式一起使用,但此处为了更好说明,只用享元模式 * 定义:享元模式针对于是一种以时间来切换空间的方式,其公用同一实例,线程池,string都是其应用 */ public class FlyweightPattern { public... 阅读全文
posted @ 2016-12-28 17:17 麦子TMAC 阅读(132) 评论(0) 推荐(0) 编辑
摘要: import java.util.LinkedList; /** * 组合模式 * * @author TMAC-J 主要用于树状结构,用于部分和整体区别无区别的场景 想象一下,假设有一批连锁的理发店,你到每个店去理发都是等同的 * 那么假设不用组合模式,你到10家店理发,你需要知道这10家店或者是知道他们的父类店 * 然后new10次来统计消费情况... 阅读全文
posted @ 2016-12-28 16:20 麦子TMAC 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 可以看出,子类中的属性的引用指向的是父类属性的地址。 阅读全文
posted @ 2016-12-28 15:26 麦子TMAC 阅读(3661) 评论(0) 推荐(0) 编辑
摘要: /** * 桥接模式 * @author TMAC-J * 应用于多维度方案 * 用组合的形式代替继承 * 符合单一职责原则 * 一个类只有一个引起他变化的原因 * 增加程序灵活性 */ public class BridgePattern { abstract class Road{ Car car; void run(){};... 阅读全文
posted @ 2016-12-28 11:02 麦子TMAC 阅读(216) 评论(0) 推荐(0) 编辑
摘要: /** * 外观模式(门面模式) * @author TMAC-J * 外观模式是通过访问一个前台来实现对子系统的访问,其和代理模式的区别是 * 代理模式是通过代理一个类的形式,也就是说一对一的关系 * 而外观模式是通过访问一个前台来对子系统(多个类)的访问,一对多 * 以下的例子中A、B、C都是子系统中的类 */ public class FacadePattern { p... 阅读全文
posted @ 2016-12-28 10:17 麦子TMAC 阅读(156) 评论(0) 推荐(0) 编辑