设计模式应试复习篇(三)——6种创建型模式的类图结构(4~6种)

4、建造者模式

1)建造者模式包含以下角色:

Builder:抽象建造者为创建一个产品对象的各个部件指定抽象接口

ConcreteBuilder:具体建造者实现了抽象建造者接口,实现各个部件的构造和装配方法,定义并明确它所创建的复杂对象,也可以提供一个方法返回创建好的复杂产品对象

Director:指挥者负责安排复杂对象的建造次序,指挥者与抽象建造者之间存在关联关系,可以在其construct方法中调用建造者对象的部件构造与装配方法,完成复杂对象的建造

Product:产品角色是被构建的复杂对象,包含多个组成部件

2)模式结构

3)实例:KFC套餐 建造者模式可以用于描述KFC如何创建套餐:套餐是一个复杂对象,它一般包含主食(如汉堡、鸡肉卷等)和饮料(如果汁、可乐等)等组成部分,不同的套餐有不同的组成部分,而KFC的服务员可以根据顾客的要求,一步一步装配这些组成部分,构造一份完整的套餐,然后返回给顾客。

5、原型模式

1)原型模式包含以下角色:

Prototype:抽象原型类是定义具有克隆自己的方法的接口

ConcretePrototype:具体原型类实现具体的克隆方法,在克隆方法中返回自己的一个克隆对象

Client:在客户类中只需要直接实例化或通过工厂方法等方式创建一个对象,再通过调用该对象的克隆方法复制得到多个相同的对象

2)模式结构:

3)实例一:邮件复制(浅克隆) 由于邮件对象包含的内容较多(如发送者、接收者、标题、内容、日期、附件等),某系统中现需要提供一个邮件复制功能,对于已经创建好的邮件对象,可以通过复制的方式创建一个新的邮件对象,如果需要改变某部分内容,无须修改原始的邮件对象,只需要修改复制后得到的邮件对象即可。使用原型模式设计该系统。在本实例中使用浅克隆实现邮件复制,即复制邮件(Email)的同时不复制附件(Attachment)。

 

实例二:邮件复制(深克隆) 使用深克隆实现邮件复制,即复制邮件的同时复制附件。

6、单例模式

1)单例模式包含如下角色:

Singleton:单例

单例模式的目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式包含的角色只有一个,就是单例类Singleton。单例类拥有一个私有构造函数,确保用户无法通过new关键字直接实例化它。除此之外,该模式中包含一个静态私有成员变量与静态公有的工厂方法,该工厂方法负责检验实例的存在性并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。

2)模式结构

3)实例一:身份证号码

实例二:打印池 在操作系统中,打印池(Print Spooler)是一个用于管理打印任务的应用程序,通过打印池用户可以删除、中止或者改变打印任务的优先级,在一个系统中只允许运行一个打印池对象,如果重复创建打印池则抛出异常。现使用单例模式来模拟实现打印池的设计。

猜你喜欢

转载自blog.csdn.net/qq_40996041/article/details/83550338