前言:早已断断续续把23种设计模式学习了一遍,可是实际运用的不是很理想。如果刻意用设计模式,你会发现一个很小的项目,很小的功能其实处处都是可以按标准模式去编码的,这个也许就是所谓的过度设计的问题;而不用设计模式,代码又写得愚蠢臃肿,除了堆砌代码实现功能之外你看不到程序更别提思想上的一丝闪光点。也许正像网上很多人说的那样,到一定境界自动就会高效运用到项目中去了。当然现在也不能放弃学习它,下面就把创建型模式再整理一遍,下次用到的时候可以对照查一查看一下,希望可以“一劳永逸”。
一、概述
1、创建型模式,就是用来创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。
2、两个主旋律:第一,将系统使用哪些具体类的信息封装起来;第二,隐藏了这些类的实例是如何被创建和组织的。外界对于这些对象只知道它们共同的接口,而不清楚其具体的实现细节。
3、作用
创建者模式作用可以概括为如下两点((1)和(2)引用网上博文):
(1)封装创建逻辑,绝不仅仅是new一个对象那么简单。
(2)封装创建逻辑变化,客户代码尽量不修改,或尽量少修改。
二、五种模式
1、单件模式(Singleton Pattern)
单件模式(Singleton Pattern)解决的是实体对象的个数问题,贴一段代码说明一下:
2、工厂方法模式(Factory Pattern)
在工厂方法中,工厂类成为了抽象类,其实际的创建工作将由其具体子类来完成。工厂方法的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中去,强调的是“单个对象”的变化。
3、抽象工厂模式(Abstract Factory)
(1).AbstractFactory:声明一个创建抽象产品对象的接口。
(2).CreateFactory:实现创建具体产品对象的操作。
(3).AbstractProduct:为一类产品对象声明接口。
(4).CreateProduct:定义一个将被相应具体工厂创建的产品对象,以实现AbstractProduct接口。
(5).仅使用AbstractFactory和AbstractProduct类声明的接口。
抽象工厂是所有工厂模式中最为抽象和最具有一般性的一种形态。抽象工厂可以向客户提供一个接口,使得客户可以在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象,强调的是“系列对象”的变化。
4、原型模式(Prototype Pattern)
和工厂模式一样,同样对客户隐藏了对象创建工作,但是,与通过对一个类进行实例化来构造新对象不同的是,原型模式是通过拷贝一个现有对象生成新对象的。
5、建造者模式(Builder Pattern)
(1)抽象建造者(Builder):给出一个抽象接口,以规范产品对象的各个组成部分的建造。
(2)具体建造者(Concrete Builder):担任这个角色的是与应用程序紧密相关的一些类,它们在应用程序的调用下创建产品的实例。
(3)导演者(Director):是与客户端打交道的角色,将创建产品的请求划分为对各个零件的建造请求,再将这些请求委派给具体建造者。 这一部分是组合到一起的算法(相对稳定)。
(4)产品(Product):建造中的对象(由多个部件组成)。 这个复杂对象的组成部分经常面临着剧烈的变化。
建造者模式把构造对象实例的逻辑移到了类的外部,在这个类的外部定义了这个类的构造逻辑。它把一个复杂对象的构造过程从对象的表示中分离出来,其直接效果是将一个复杂的对象简化为一个比较简单的目标对象。
关于创建型模式还有其他几种,ms它们用的很“非主流”,不在赘述了。