首页 > 技术文章 > 23种设计模式

HZDX-2017 2017-03-31 23:21 原文

来源网站:

http://www.cnblogs.com/lin3615/p/3783272.html

23中设计模式,总体分为三大类:

一。

创建型模式:5种。工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式

结构型模式:7种。适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式

行为型模式:11种。策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式

其他:2种。并发型模式,线程池模式。

总原则:开闭原则。即对扩展开发,对修改关闭。

1.单一职责(类);2.里氏替换(有基类的一定可以出现子类);3.依赖倒转(开闭原则基础,面向接口编程,依赖于抽象类而不依赖于具体)

4.接口隔离原则(每个接口中不存在子类用不到的方法,如若不然,则拆分);5.迪米特法则(最少知道,即将逻辑封装在方法内,对外提供public方法)

6.合成复用(尽量首先使用合成/聚合,而不是继承)

二。各个模式介绍

1.单例模式:确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例。

私有构造方法;指向自己实例的私有静态引用;以自己实例为返回值的静态公有方法

优点:内存中只有一个对象,节省内存空间;避免频繁的创建销毁对象,提高性能;避免对共享资源的多重占用;可以全局访问;

注意:不能使用反射,不然会实例化新的对象;不用做断开实例类对象与类中静态引用的危险操作;多线程使用单例共享资源时,注意安全问题

2.工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪个类,使得一个类的实例化延迟到其子类。

3.抽象工厂:创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。

与工厂方法的区别:工厂方法模式提供的所有产品都是衍生自同一个接口/抽象类;抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。

若工厂的产品全部属于同一个等级结构,则属于工厂方法模式;若工厂的害怕来自多个等级结构,则属于抽象工厂模式。

 3.建造者模式:将一个复杂的对象构建与他的表示分离,使得同样的构建过程可以创建不同的表示。

4.原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。使用较少。

实现Cloneable接口;重写Object类中的clone方法。

优点:直接操作的内存中二进制流,性能特别明显。

 

推荐阅读