![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Design Pattern
sunday2018
垃圾堆
展开
-
代理模式(Proxy Pattern)
代理模式静态代理代理对象和目标对象实现一样的接口优点:可以在不修改目标对象的前提下扩展目标对象的功能。缺点:冗余,由于代理对象要实现于目标对象一致的接口,会产生过多的代理类;不易维护,一旦接口方法增加,目标对象和代理对象都要进行修改。// 接口类public interface UserDao { void save();}// 目标对象public class UserDaoImpl implements UserDao { @Override public v原创 2022-01-17 08:50:47 · 149 阅读 · 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 · 79 阅读 · 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 · 79 阅读 · 0 评论 -
外观模式(Facade Pattern)
外观模式(Facade Pattern)作用是为一个复杂的子系统对外提供一个易用的接口.Facade: 外观角色, 该角色在子系统和客户端之间做了一层隔离, 对客户端屏蔽了功能的具体实现细节, 只需要调用外观角色对外提供好的接口即可.SubSystem: 子系统可以是一个类,也可以是一个功能模块或者是完整的系统示例代码// 子系统public class SubSystemA { public void methodA() { // ... 业务代码 }}p原创 2021-10-07 16:39:40 · 84 阅读 · 0 评论 -
建造者(Builder Pattern)
建造者模式(Builder Pattern)类的实例创建和初始化通常有下面两种方式:通过类提供的构造器创建类的实例并初始化类的属性通过无参构造器创建实例, 然后通过set方法初始化实例的属性建造者模式又是一种创建类实例和初始化的方式.通常在一个类的构造器参数数量超过4个, 且这些参数有些是可选的, 就可以使用建造者模式示例代码第一种可以参考Effective Java中的例子第二种如下// 被构建的对象public class Computer { private Str原创 2021-10-02 18:38:59 · 160 阅读 · 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 · 68 阅读 · 0 评论