23个设计模式

第一部分 接口型模式

1. Adapter(适配器)模式

Adapter模式的宗旨就是,保留现有类所提供的服务,向客户提供接口,以满足客户的期望。

1.1 接口适配

继承老类,实现新类,实现新类的方法里调用老类方法。

1.2 类和对象适配器

继承新类,老类当属性,继承新类方法里调用老类方法。

 

2. Facade(外观)模式

Facade模式的目的在于提供一个接口,使子系统更加容易使用。

把子系统的类重构为一个个目的明确的类,为了子系统便于使用,在子系统中顺带提供一些示例类或者外观类。

 

3. Composite(组合)模式

让用户用统一的接口处理对象以及对象组合。

 

4. Bridge(桥接)模式

将抽象与抽象方法的实现相分离,让他们可以独自变化。

把不同实现的方法移到一个新的Driver类中,然后把Driver类作为属性。

有名的例子:JDBC数据库驱动程序


第二部分 责任型模式

 

5. Singleton(单例)模式

确保某个类只有一个实例,并提供一个全局访问点。

实现方法一:将单例对象作为单例类的一个静态域创建实例。

private static Factory factory = new Factory();

public static Factory getFactory() {
    if(factory == null) factory = new Factory();
    return factory;
}

 实现方法二(单例和线程):

 

private static Factory factory;
private static Object classLock = Factory.class;

public static Factory getFactory() {
    synchronized(classLock) {
        if(factory == null) factory = new Factory();
        return factory;
    }
}
 

6. Observer(观察者)模式

频繁用于GUI应用程序中。当一个对象状态改变时,所有依赖于这个对象的对象都能得到通知。

继承Observable,在方法中通过notifyObservers()通知观察者。

 

7. Mediator(中介者)模式

广泛用于GUI应用开发。将对象集合之间的交互封装起来,降低耦合程度,避免显式引用。

 

8. Proxy(代理)模式

为对象提供一个代理/占位来控制对对象的访问。

代理对象,实现InvocationHandler接口,实现invoke方法。

 

9. Chain of Responsibility(责任链)模式

让每个对象决定是否有机会处理请求。

 

10. Flyweight(享元)模式

共享的提取出来。


第三部分 构造型模式

 

11. Builder(生成器)模式

将复杂对象的构造逻辑从对象中分离出来。

从配置文件中读取字段,赋给一个bean一样的类,通过这个类来build一个对象。

 

12. Factory Method(工厂方法)模式

创建对象,控制对哪个类进行实例化,不需要具体知道初始化了哪个类,

http://www.jdon.com/designpatterns/designpattern_factory.htm

 

13. Abstract Factory(抽象工厂)模式

创建一系列相互关联或相互依赖的对象。GUI工具包就是一个抽象工厂。这个模式最经典的范例是“外观和感觉”系列——GUI控件族。

 

14. Prototype(原型)模式

不通过实例化来创建一个实例,通过复制一个现有对象来生成新的对象。

可以借助Object.clone()方法,但可能不是开发者想要的副本,进一步复制工作需要由开发者完成。

(是否是浅复制,即对象中的对象属性的对象没有复制?)

 

15. Memento(备忘录)模式

提供状态存储和状态恢复功能。最常用的用法是在应用程序中提供撤销操作。暂时的可以放在容器中,持久化可以放在文本文件中。

 

第四部分 操作型模式

 

16. Template  Method(模板方法)模式

概念: 抽象出方法的框架,包括处理步骤或流程,子类给出具体的实现。

用处:在父类中规范流程,由子类去做不同的实现。

 

TemplateMethod

 

17. State(状态)模式

把状态有关的处理逻辑分散到代表对象状态的各个类中。

 

18. Strategy(策略)模式

可选的策略封装在不同的类中,并在这些类中实现一个共同的操作。

 

19. Command(命令)模式

把请求封装在对象里。

 

20. Interpreter(解释器)模式

 

第五部分 扩展型模式

 

21. Decorator(装饰器)模式

混合操作的不同变化。

 

22.  Iterator(迭代器)模式

提供一个顺序访问集合元素的方法。

 

23. Visitor(访问者)模式

不修改现有类,定义类层次结构的新的操作。

 

保留最后行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值