简单的说我们能够把23种设计模式能够归为三大类,各自是创建型模式、结构型模式和行为型模式。
今天,首先看一下创建型模式。
创建型设计模式包含5种:单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)。
1)简单介绍
保证一个类仅有一个实例。并提供一个訪问它的全局訪问点。
单例模式是一种经常使用的软件设计模式。
在它的核心结构中仅仅包括一个被称为单例类的特殊类。
通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问。从而方便对实例个数的控制并节约系统资源。
假设希望在系统中某个类的对象仅仅能存在一个,单例模式是最好的解决方式。
2)长处
A)实例控制。单例模式会阻止其它对象实例化其自己的单例对象的副本。从而确保全部对象都訪问唯一实例。
B)灵活性。
由于类控制了实例化过程。所以类更改实例化过程比較灵活。
3)缺点
A)开销。尽管数量少。但假设每次对象请求引用时都要检查时候存在类的实例,须要一些开销。
可通过使用静态初始化解决。
B)对象生存期。不能解决删除单个对象的问题。
1)简单介绍
工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个累的实例化延迟到子类其中。
2)长处
工厂方法模式是简单工厂模式的衍生,攻克了很多简单工厂模式的问题。
克服了简单工厂违背开放-封闭原则的缺点。又保持了封装对象创建过程的长处。要更换对象时。不须要做大修改就能够实现。减少了客户程序与产品对象的耦合。
3)缺点
因为每添加一个产品。就须要添加一个产品工厂的类。添加了额外的开发量。
1)简单介绍
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口。而无需制定他们详细的类
2)长处
A)抽象工厂模式的优点便是易于交换产品系列,因为详细工厂类在一个应用中仅仅须要在初始化的时候出现一次。这就使得改变一个应用的详细工厂变得很easy,它仅仅须要改变详细工厂就可以使用不同的产品配置。
B)让详细的创建实例过程与client分离,client是通过他们的抽象接口操纵实例,产品的详细类名也被详细工厂的实现分离,不会出如今客户代码中。
3)缺点
抽象工厂模式的最大缺点就是产品组扩展很困难。
1)简单介绍
建造者模式,将一个复杂对象的构建与他的表示分离。使得相同的构建过程能够创建不同的表示,又叫“生成器模式”。
建造者模式能够将一个产品的内部表象与产品的生成过程切割开来,从而能够使一个建造过程生成具有不同的内部表象的产品。假设我们用了建造者模式,那么用户就仅仅须要指定建造者的类型就能够得到他们。而详细建造的过程和细节就不须要知道了。
它主要用于创建一些复杂的对象,这些对象内部构件间的建造顺序一般是稳定的,但对象内部的构建通常面临着复杂的变化。
2)长处
它的优点就是使得建造者代码与表示代码分离,因为建造者隐藏了该产品是怎样组装的。所以假设须要改变一个产品的内部表示,仅仅须要再定义一个详细的建造者就能够了。
1)简单介绍
原型模式,用原型实例指定创建对象的种类。并且通过拷贝这些原型创建新的对象。事实上就是从一个对象再创建还有一个可定制的对象。并且不须要知道不论什么创建的细节。
2)长处
原型模式作为创建型模式中最特殊的一个模式。详细的创建过程。是由对象本身提供。这样我们在非常多的场景下。能够非常方便高速的构建新的对象。我们能够通过使用对象的克隆完毕。原型模式对于系统也能够做到无缝扩展。