python设计模式4-建造者模式
1. 建造者模式(Builder)介绍
UML类图
四个要素
- 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。
- 抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现。这样更容易扩展。一般至少会有两个抽象方法,一个用来建造产品,一个是用来返回产品。
- 建造者:实现抽象类的所有未实现的方法,具体来说一般是两项任务:组建产品;返回组建好的产品。
- 导演类:负责调用适当的建造者来组建产品,导演类一般不与产品类发生依赖关系,与导演类直接交互的是建造者类。一般来说,导演类被用来封装程序中易变的部分。
2. 示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-'''Builder Pattern with Python Code
'''from abc import abstractmethod, ABCMeta# 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂
class Product(object):name = Nonemode = Nonedef showProduct(self):print("名称:" + self.name)print("型号:" + self.mode)def setName(self, name):self.name = namedef setMode(self, mode):self.mode = mode# 抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现
class Builder(metaclass=ABCMeta):@abstractmethoddef setPart(self, arg1, arg2):pass@abstractmethoddef getProduct(self):pass# 建造者:实现抽象类的所有未实现的方法
class ConcreteBuilder(Builder):product = Product()def getProduct(self):return self.productdef setPart(self, arg1, arg2):self.product.setName(arg1)self.product.setMode(arg2)# 导演类:负责调用适当的建造者来组建产品
class Director(object):builder = ConcreteBuilder()def getAProduct(self):self.builder.setPart("宝马汽车", "X7")return self.builder.getProduct()def getBProduct(self):self.builder.setPart("奥迪汽车", "Q5")return self.builder.getProduct()class Client(object):def main(self):director = Director()product1 = director.getAProduct()product1.showProduct()product2 = director.getBProduct()product2.showProduct()if __name__ == "__main__":Client().main()
输出:
# ./Builder.py
名称:宝马汽车
型号:X7
名称:奥迪汽车
型号:Q5
参考:
https://wiki.jikexueyuan.com/project/java-design-pattern/builder-pattern.html
python设计模式4-建造者模式相关推荐
- python设计模式之建造者模式
python设计模式之建造者模式 建造者模式的适用范围:想要创建一个由多个部分组成的对象,而且它的构成需要一步接一步的完成.只有当各个部分都完成了,这个对象才完整.建造者模式表现为复杂对象的创建与 ...
- Python 设计模式之建造者模式 Builder Pattern
#引入建造者模式 肯德基的菜单上有 薯条, 鸡腿,鸡翅,鸡米花,可乐,橙汁,火腿汉堡,至尊虾汉堡,牛肉汉堡 , 鸡肉卷等这些单品,也有很多套餐. 比如 套餐1:鸡翅,至尊虾汉堡,可乐,薯条 套餐2:鸡 ...
- Python设计模式-装饰器模式
Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...
- Python设计模式-中介者模式
Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...
- Python设计模式-职责链模式
Python设计模式-职责链模式 代码基于3.5.2,代码如下; #coding:utf-8 #职责链模式class Handler():def __init__(self):self.success ...
- Python设计模式-享元模式
Python设计模式-享元模式 基于Python3.5.2,代码如下 #coding:utf-8class Coffee:name = ""price = 0def __init_ ...
- 建造者模式java_java设计模式3——建造者模式
java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...
- Java设计模式(建造者模式-适配器模式-桥接模式)
Java设计模式Ⅲ 1.建造者模式 1.1 建造者模式概述 1.2 建造者模式的注意事项和细节 1.3 代码理解 2.适配器模式 2.1 类适配器模式 2.1.1 代码理解 2.2 对象适配器模式 2 ...
- python的编程模式-Python设计模式之状态模式原理与用法详解
本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...
- 设计模式之建造者模式(01)
2019独角兽企业重金招聘Python工程师标准>>> 建造者模式的定义: Separate the construction of a complex object from it ...
最新文章
- spring事件驱动模型--观察者模式在spring中的应用
- tensorflow学习之(三)Varible 变量的使用
- mysql 入门命令
- Less or Equal(CF-977C)
- python 如何修改字典的key值_Python编程:如何把元组/字典作为参数传递给函数(附代码)...
- 程序设计与算法----递归之放苹果问题
- 关于操作系统I/O的一些基础知识
- 华为交换机vlan创建命令
- 文明4 java_文明4主题曲《Baba Yetu》(敬请关注中文歌词部分~)
- 【预防流感】冬春之交推荐吃香菜
- 让Google搜索到GitHub上的个人博客
- 阿里巴巴产品实习生23天
- C++ 中 _T 含义及用途
- Java实现分割矩形
- 电子学:第011课——实验 10:晶体管开关
- 微信小程序实现分类列表
- Castor xsd生成java_利用Castor自动生成java文件
- 计算机配置好坏怎么看,怎么看电脑配置好坏
- Android NSD学习与使用
- 氧化锆气体传感器行业调研报告 - 市场现状分析与发展前景预测