天天看点

走穿23种设计模式-前五种,创建型模式详解走穿23种设计模式-前五种,创建型模式详解共勉:你想做的事,一定要做到。只要你建立起一种“一心一意”的态度,并且全面发挥自己的能力,你就能够成就一番伟业。

走穿23种设计模式-前五种,创建型模式详解

总体来说设计模式分为三大类(23种):

创建型模式,共五种:

单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。

结构型模式,共七种。

适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种。

策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其实还有两类特殊的模式:并发型模式和线程池模式。

很多人只知道一两种设计模式,单例模式和工厂模式,而且有很多人不知道工厂模式还有分类:工厂方法模式和抽象工厂模式。本文带你完全的学习一下这创建类型的五种模式,并进行详细总结,看完这篇文章,你都可以说你已经深入了解过5种设计模式以上了。

创建型的五种设计模式(Pattern)概念

单例模式(Singleton)

单例模式中一个类只有一个实例,而且这个类实例化一次后并向整个系统提供这个实例对象。

单利模式减少内存开支,避免对资源的多重占用,优化并共享资源访问,当单利模式扩展难,不易测试。

工厂方法模式(Factory Method)

工厂方法模式定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。

抽象工厂模式(Abstract Factory)

工厂方法模式的升级,它为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。

建造者模式(Builder)

也叫生成器模式,將一个复制对象的构建与其表示分类,使得同样的构建过程可以创建不同的表示。

原型模式(Prototype)

用原型模式指定创建对象的种类,并通过拷贝这些原型创建新的对象。

上面就是创建型设计模式的几个概念,你要了解这几个设计模式,你必须是要熟记并理解这几个概念。

没错就是背诵下来这几个模式的概念,很多时候别人问你设计模式,如果不探讨太多,你把设计模式的概念说给他知道,再进行一些简单的分析,这已经够了。

创建型的五种设计模式的类图

1.单例模式了类图

走穿23种设计模式-前五种,创建型模式详解走穿23种设计模式-前五种,创建型模式详解共勉:你想做的事,一定要做到。只要你建立起一种“一心一意”的态度,并且全面发挥自己的能力,你就能够成就一番伟业。

2.工厂方法模式了类图

走穿23种设计模式-前五种,创建型模式详解走穿23种设计模式-前五种,创建型模式详解共勉:你想做的事,一定要做到。只要你建立起一种“一心一意”的态度,并且全面发挥自己的能力,你就能够成就一番伟业。

3.抽象工厂模式了类图

走穿23种设计模式-前五种,创建型模式详解走穿23种设计模式-前五种,创建型模式详解共勉:你想做的事,一定要做到。只要你建立起一种“一心一意”的态度,并且全面发挥自己的能力,你就能够成就一番伟业。

4.建造者模式了类图

走穿23种设计模式-前五种,创建型模式详解走穿23种设计模式-前五种,创建型模式详解共勉:你想做的事,一定要做到。只要你建立起一种“一心一意”的态度,并且全面发挥自己的能力,你就能够成就一番伟业。

5.原型模式了类图

走穿23种设计模式-前五种,创建型模式详解走穿23种设计模式-前五种,创建型模式详解共勉:你想做的事,一定要做到。只要你建立起一种“一心一意”的态度,并且全面发挥自己的能力,你就能够成就一番伟业。

创建型的五种设计模式分析

单例模式

单例模式就是实例化一次后,这个类的对象以后都不需要实例化,并且可以全局使用。

单例模式有两种实现:饿汉式单例模式和懒汉式单例模式。

饿汉式单例模式就是:把实例化在类的成员变量构建的时候就去实例化,这样在任何时候调用这个类的对象都是创建好的,随时可以获取到的,因为饿,所有要马上获取到。。。

懒汉式单例模式就是:当这个类对象第一次调用的时候才进行实例化,快要用的时候才去搞,这就比较懒了!

这里懒汉式单例模式还可能存在线程问题,也就是多个地方同时要调用这个单例对象,会出现多个实例化的对象,所有要把实例化的语句加个同步锁。

单例模式还有一个登记式单例模式,但是基本没人用,主要的代码太麻烦了,不好理解。

单例模式在Android大程序设计中基本都是用到的,继承了Application的类,就是程序刚开始的时候创建的类,可以存取一些全局的属性。

工厂方法模式

结合工厂方法模式的概念和类图,你看到子类实现父类的方法,然后调用父类的方法来实现具体操作,这就是工厂方法。

其实就是java继承和多态的具体表现!

抽象工厂模式

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

同时你也可以对比一下工厂方法模式的定义:为某个对象提供一个接口,而且无需指定它们的具体类。

都是子类实现接口的方法,并在子类写具体的代码。这里抽象工厂的接口类是能创建多个相关的对象,而工厂方法的接口类是只创建一个对象。

如果抽象工厂模式的抽象工厂接口类只创建一个对象,那么它就是工厂方法模式。

当一个对象都有相同的约束时,可以使用抽象工厂模式。

打个比方说,这个工厂的几个产品都需要经过某些共同的步骤和打上相同的商标,这一组产品可以在一个工厂里面生产,减少很多重复的代码在不同的地方都出现多次。

当然你把这几个产品分到几个工厂去生产也是可以的,就是会造成一个资源重复建造。

建造者模式

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

这里給大家分析一下:

定义的前半句说,构造与表示分离,其实就是继承(或实现)。

两种工厂模式也都是为某个对象提供一个接口,而且无需指定它们的具体类。

所以建造者模式的重点是后半句:同样的构建过程可以创建不同的结果。

建造者模式其实和工厂方法模式有很多的类似的地方,这个要看代码的实现做比较。

原型模式

用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。

java中内置了克隆机制。Object类具有一个clone()方法,能够实现对象的克隆。

使一个类支持克隆只需要两步。

1.实现接口Cloneable类

2.覆盖Object的clone()方法,完成对象的克隆操作,通常只需要调用Object的clone()方法即可。

上面就是设计模式中的五种创建型的模式,其实重点还是要理解概念,并会做一点解释就可以了。

如果要深入理解一些,可以看我之前写的介绍,都有实际实例和代码解释java设计模式中的五种创建型模式:

原型模式:http://blog.csdn.net/wenzhi20102321/article/details/78167984

建造者模式:http://blog.csdn.net/wenzhi20102321/article/details/78163855

抽象工厂模式:http://blog.csdn.net/wenzhi20102321/article/details/78153437

工厂方法模式:http://blog.csdn.net/wenzhi20102321/article/details/78129065

可以仔细对比一下工厂方法模式和抽象工厂模式,看看概念,看看类图,看看代码,就会明白了。

单例模式:http://blog.csdn.net/wenzhi20102321/article/details/77882203

java 23种设计模式介绍:http://blog.csdn.net/wenzhi20102321/article/details/54601909

共勉:你想做的事,一定要做到。只要你建立起一种“一心一意”的态度,并且全面发挥自己的能力,你就能够成就一番伟业。