篇一 :23种设计模式全解析

23种设计模式全解析

分类: DesignPattern 2013-06-24 10:56 54864人阅读评论(29) 收藏举报

目录(?)[+]

一、设计模式的分类

总体来说设计模式分为三大类:

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

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

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

其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:

二、设计模式的六大原则

总原则:开闭原则(Open Close Principle)

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类等,后面的具体设计中我们会提到这点。

1、单一职责原则

不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,如若不然,就应该把类拆分。

…… …… 余下全文

篇二 :23种设计模式的详解

23种Java设计模式

设计模式分两类:创建型模式、行为型模式。

一、创建型模式 :

1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory

1、工厂模式:

客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种 语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你” builder。(这一定比美军在伊拉克用的翻译机好卖)

2、建造模式:

将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。

…… …… 余下全文

篇三 :23种设计模式

一、设计模式的分类

总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

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

1、 工厂方法模式(Factory Method)

[java]1. public interface Sender {

2.

3. public void Send(); } 其次,创建实现类:

[java]public class MailSender implements Sender {

@Override

public void Send() {

System.out.println("this is mailsender!");

}

}

[java]public class SmsSender implements Sender {

@Override

…… …… 余下全文

篇四 :23种设计模式简要说明

设计模式

创建模式:

1. factory时的一系列初始化工作从构造方法中剥离出来;它们唯一的区别在于在创建类的复杂程度上,抽象工厂指的是将共同部分封装在抽象类中,将不同部分延伸到其子类中去。

2. singleton:确保系统中只有一个实例对象的存在。

3. builder

4. prototype:通过原型实例指定创建对象的类型,并且通过拷贝这些原型来创建新的对象。

结构模式:

1. flyweight:避免大量拥有相同内容的小类的开销。

2. bridge:将抽象和行为划分开来,使得它们各自独立,但又能够动态的结合。(继承抽象接口组合行为接口)。

3. decorator:动态的给一个对象添加一些额外的职责。

4. composite:将对象以树形结构的形式组合起来,已形成部分-到整体的层次结构,使客户端对单个对象和组合对象的使用具有一致性。

5. adapter:将原本两个没有关系的类结合在一起使用(有适配者和被适配者,您可以使用组合模式或者是继承模式)。

6. proxy:为其他对象提供一种代理以控制对这些对象的访问,典型的就是权限控制。

7. facade:为系统中的一组接口提供一个一致的界面。(典型的就是数据库jdbc的操作)。

…… …… 余下全文

篇五 :23种设计模式

从追MM谈Java的23种设计模式

1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory.

工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

程序代码

以下是引用片段:

Java代码

1. publci class Sample{

2. ....

3. }

4.

5. public class A extends Sample{

6. ....

7. }

8.

9. public class B extends Sample{

10. ......

11. }

工厂类处于决定实例化那个产品类的中心位置

Java代码

1. public class Factory{

2.

3. //静态工厂方法,无必要再去实例化这个工厂类,增加没有必要的代码

…… …… 余下全文

篇六 :23种设计模式

设计模式主要分三个类型:创建型、结构型和行为型。

其中创建型有:

一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点

二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。

三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。

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

五、Prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。

行为型有:

六、Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。

七、Observer,观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。

八、Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。

…… …… 余下全文

篇七 :23种设计模式

设计模式主要分三个类型:创建型、结构型和行为型。

其中创建型有:

一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点

二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。

三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。

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

五、Prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。

行为型有:

六、Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。

七、Observer,观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。

八、Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。

…… …… 余下全文

篇八 :23种设计模式

新版设计模式手册

一.创建型模式

1.单件模式

意图

保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适用性

??当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 ??当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。

2.抽象工厂

意图

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 适用性

??一个系统要独立于它的产品的创建、组合和表示时。 ??一个系统要由多个产品系列中的一个来配置时。 ??当你要强调一系列相关的产品对象的设计以便进行联合使用时。 ??当你提供一个产品类库,而只想显示它们的接口而不是实现时。

3.建造者模式

意图

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用性

??当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 ??当构造过程必须允许被构造的对象有不同的表示时。

4.工厂方法模式

意图

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

…… …… 余下全文