type
status
date
slug
summary
tags
category
icon
password
Email
水清月冷,香消影瘦,人立黄昏。——吴文英《极相思·题陈藏一水月梅扇》
文章首发于我的个人博客:欢迎大佬们来逛逛
设计模式项目地址:C++ Java python实现
建造者模式
建造者模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。
官方说法就是将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。
创建者模式的使用场景
主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成。
- 需要生成的对象具有复杂的内部结构。
- 需要生成的对象内部属性本身相互依赖。
建造者模式实现步骤
1.提供抽象建造者类: 为创建产品各个部分,统一抽象接口
2.提供具体建造者类:具体实现抽象建造者各个部件的接口
3.提供一个或多个具体产品类:具体的创建产品的各个部分
4.提供一个指挥类:负责安排和调度复杂对象的各个建造过程
案例
实现建造不同电脑的过程:
- 联想电脑
- 苹果电脑
对于电脑我们规定其具有两个必须的属性,即cpu和ram,以及四个不是必须的属性mouse,keyboard,display,host。
我们可以把创建他们两个电脑的过程抽象出来,对于不是必须的属性,我们在创建对象时无须指定,只需传递必须的两个参数即可,这就用到了建造者模式。
类:
- 产品类:Computer,指定电脑所具有的所有属性,并且提供set方法,注意必要属性必须设置为构造函数的形式。
- 抽象建造者类:AbstractComputerBuilder,负责对象的创建过程,提供set属性的无参抽象方法,提供一个返回子类指针对象的接口。
- 具体建造者类:Mac/LenovoComputerBuilder,具体设置其必要与非必要属性值,实现父类抽象方法
- 监督者:Director:负责监督创建。
总结
优点
- 封装性好,构建和表示分离。
- 扩展性好,各个具体的建造者相互独立,有利于系统的解耦
- 控制细节风险,客户端无需详知细节,建造者细化创建过程
缺点
- 产品的组成部分必须相同,这限制了其使用范围
- 产品内部发生变化,建造者需同步修改,后期维护成本较大
- 作者:Yuleo
- 链接:https://www.helloylh.com/article/b05f0f6f-4b6c-4a71-8e10-12d3e689a756
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。