创建型模式5种(2)

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。
使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成。就像我们去商场购买商品时,不需要知道商品是怎么生产出来一样,因为它们由专门的厂商生产。


1.单例(Singleton)模式:
          在计算机系统中,还有 Windows 的回收站、操作系统中的文件系统、多线程中的线程池、显卡的驱动程序对象、打印机的后台处理服务、应用程序的日志对象、数据库的连接池、网站的计数器、Web 应用的配置对象、应用程序中的对话框、系统中的缓存等常常被设计成单例。

2.原型(Prototype)模式:
         在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。
         例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。

3.工厂方法(FactoryMethod)模式:
        如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”,它不属于 GoF 的 23 种经典设计模式,它的缺点是增加新产品时会违背“开闭原则”。
        各种产品有专门的工厂生产。
        不同的工厂生产同类的不同的产品。工厂A、B分别生产洗发水a系列、洗发水b系列。

4.抽象工厂(AbstractFactory)模式:
        工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如农场里既养动物又种植物,电器厂既生产电视机又生产洗衣机或空调,大学既有软件专业又有生物专业等。
        同一工厂生产不同的产品。工厂A生产洗发水、沐浴露等多种产品。

5.建造者(Builder)模式:
       客厅是产品,包括墙、电视和沙发等组成部分。具体装修工人是具体建造者,他们负责装修与墙、电视和沙发的布局。项目经理是指挥者,他负责指挥装修工人进行装修。

----------

模式的结构

1.单例模式的主要角色如下。

    1.单例类:包含一个实例且能自行创建这个实例的类。
    2.访问类:使用单例的类。


2.原型模式包含以下主要角色。

    1.抽象原型类:规定了具体原型对象必须实现的接口。
    2.具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。
    3.访问类:使用具体原型类中的 clone() 方法来复制新的对象。


3.工厂方法模式的主要角色如下。

    1.抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。
    2.具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。
    3.抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。
    4.具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。


4.抽象工厂模式的主要角色如下。

    1.抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),可以创建多个不同等级的产品。
    2.具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。
    3.抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。
    4.具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它 同具体工厂之间是多对一的关系。


5.建造者(Builder)模式的主要角色如下。

    1.产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个滅部件。
    2.抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。
    3.具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。
    4.指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。

猜你喜欢

转载自www.cnblogs.com/zzlcome/p/11076417.html