Design Pattern
sunday2018
垃圾堆
展开
-
代理模式(Proxy Pattern)
代理模式 静态代理 代理对象和目标对象实现一样的接口 优点:可以在不修改目标对象的前提下扩展目标对象的功能。 缺点:冗余,由于代理对象要实现于目标对象一致的接口,会产生过多的代理类;不易维护,一旦接口方法增加,目标对象和代理对象都要进行修改。 // 接口类 public interface UserDao { void save(); } // 目标对象 public class UserDaoImpl implements UserDao { @Override public v原创 2022-01-17 08:50:47 · 150 阅读 · 0 评论 -
装饰器模式(Decorator Pattern)
装饰器模式 也叫包装(Wrapper)模式, 目的也是为了扩展现有的对象 示例 角色: 抽象组件(Component) 具体组件(ComponentImpl) 抽象包装角色(Decorator) 包装角色实现(DecoratorImpl) 代码: public interface Component { void doSomething(); } public class ComponentImpl implements Component { @Override public原创 2021-10-30 15:23:32 · 103 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern) 这个模式的作用是将一个类的接口转换成客户端需要的类. 现实中的例子,例如电源适配器, 将220V的电压转换成电器需要的工作电压. 项目开发中可以使用这个模式在不改变现有代码的基础上将一些功能转换或扩展成自己需要的功能, 这样也不会影响到调用原有代码的功能的模块. 这时候就可以考虑使用继承原有的Adaptee类扩展出一个新的类供客户端代码调用(类适配器),或者使用聚合的方式使原有的类成为新的类的一部分(对象适配器). 示例代码 类适配器 // 使用接口定义客户原创 2021-10-07 19:50:15 · 80 阅读 · 0 评论 -
观察者模式(Observer Pattern)
观察者模式(Observer Pattern) 在开发过程中如果碰到需要监听一个对象的状态变化并做出相应的响应时,就可以使用观察者模式 示例代码 // 抽象的观察者 public interface Observer { public void update(); } // 抽象的被观察者 public interface Subject { void attach(Observer observer); void detach(Observer observer); vo原创 2021-10-04 00:32:53 · 80 阅读 · 0 评论 -
外观模式(Facade Pattern)
外观模式(Facade Pattern) 作用是为一个复杂的子系统对外提供一个易用的接口. Facade: 外观角色, 该角色在子系统和客户端之间做了一层隔离, 对客户端屏蔽了功能的具体实现细节, 只需要调用外观角色对外提供好的接口即可. SubSystem: 子系统可以是一个类,也可以是一个功能模块或者是完整的系统 示例代码 // 子系统 public class SubSystemA { public void methodA() { // ... 业务代码 } } p原创 2021-10-07 16:39:40 · 85 阅读 · 0 评论 -
建造者(Builder Pattern)
建造者模式(Builder Pattern) 类的实例创建和初始化通常有下面两种方式: 通过类提供的构造器创建类的实例并初始化类的属性 通过无参构造器创建实例, 然后通过set方法初始化实例的属性 建造者模式又是一种创建类实例和初始化的方式. 通常在一个类的构造器参数数量超过4个, 且这些参数有些是可选的, 就可以使用建造者模式 示例代码 第一种可以参考Effective Java中的例子 第二种如下 // 被构建的对象 public class Computer { private Str原创 2021-10-02 18:38:59 · 162 阅读 · 0 评论 -
单例模式(Singleton Pattern)
Java单例模式的几种写法 懒汉式 public class Singleton { private static Singleton instance = null; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); }原创 2021-01-25 00:22:22 · 69 阅读 · 0 评论