设计模式
隔壁阿源
先证明你的价值,再来讨论你的雄心壮志。
展开
-
责任链模式
定义 定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象形成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 优缺点 优点 请求和处理相互分离,两者解耦,提高系统的灵活性。 缺点 当责任链比较长时,性能是一个非常大的问题,采用递归,调试逻辑比较复杂。 示例代码 /* * 请求类 */ public class Request { priv...原创 2018-11-03 20:08:19 · 92 阅读 · 0 评论 -
装饰模式
定义 动态地给一个对象添加一些额外的职责。 优点缺点及使用场景 优点 装饰类和被装饰类独立发展,不相互耦合。 动态扩展一个实现类的功能。 缺点 越多层装饰越复杂。 使用场景 需要动态扩展一个类的功能。 示例代码 /* * 抽象业务类 */ public abstract class SchoolReport { public abstract void report(); ...原创 2018-11-03 20:53:09 · 136 阅读 · 0 评论 -
单例模式
单例模式的定义 定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式的优缺点及应用场景 优点 在内存中只有一个实例,减少内存开支,特别适用于一个对象需要频繁地创建销毁。 避免对资源的多重占用。 缺点 单例模式扩展困难。 不利于测试。 应用场景 创建一个对象需要耗费大量资源,如访问IO和数据库资源等。 示例代码 //通用代码 public class Singl...原创 2018-11-02 15:40:17 · 92 阅读 · 0 评论 -
工厂方法模式
定义 定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。 优点 良好的封装性,扩展性优秀,解耦。 屏蔽产品类,上层模块依赖于抽象,符合依赖倒置原则。 使用产品子类替换产品父类,符合里氏替换原则。 ...原创 2018-11-02 20:46:48 · 103 阅读 · 0 评论 -
抽象工厂模式
定义 定义:为创建一组相关或相互依赖的对象提供一个接口,而且无须指定他们的具体类。 优点 封装性好,高层不必关心实现类。 缺点 产品族扩展非常困难,增加一个产品,则对应的抽象工厂要增加方法,工厂的实现类也要增加方法,违反开闭原则。 示例代码 /* * 产品键盘类 * **/ public interface Keybo { void sayHi(); } /* * 惠普键...原创 2018-11-02 21:12:36 · 150 阅读 · 0 评论 -
模板方法模式
定义 定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 优点及缺点 优点 封装不变,扩展可变 提取公共部分代码,易于维护 行为由父类控制,子类实现 缺点 抽象类定义了抽象方法,子类的多态会影响父类的结果 使用场景 子类有公有的方法,逻辑基本相同,可以通过钩子函数约束其行为达到不同的行为效果。父类抽象共性,子类实现个...原创 2018-11-02 22:03:52 · 86 阅读 · 0 评论 -
代理模式
定义 定义:为其他对象提供一种代理以控制对这个对象的访问。 优点及使用场景 优点:职责清晰,高扩展,智能。 使用场景:Spring AOP 静态代理 自己手写代理类。 /** * 接口 * @author Administrator * */ public interface IGamePlayer { void login(); void killBoss(); void u...原创 2018-11-02 23:34:56 · 83 阅读 · 0 评论