构建者模式

  将一个复杂对象的构造与表现进行分离,利用多个步骤进行创建,同一个构建过程可用于创建多个不同的表现

  构建者模式一般由 Director(指挥官)和 Builder(建设者)构成

class Car:
def __init__(self):
self.money = None
self.address = None
self.car_name = None
self.buy_time = None def __str__(self):
return f'准备了{self.money}元,去{self.address}看看{self.car_name},还不错,买了,时间:{self.buy_time}' class CarBuilder:
def __init__(self):
self.car = Car() def ready_money(self, money):
self.car.money = money
return self def see_car(self, address):
self.car.address = address
return self def test_drive(self, car_name):
self.car.car_name = car_name
return self def buy_car(self, buy_time):
self.car.buy_time = buy_time
return self class Director:
def __init__(self):
self.builder = None def build(self, builder):
self.builder = builder
self.builder.ready_money('100').see_car('4s店').test_drive('单车').buy_car('2020.11.22')
return self.builder.car if __name__ == '__main__':
car_builder = CarBuilder()
director = Director() car = director.build(car_builder)
print(car)

Python设计模式----4.构建者模式的更多相关文章

  1. python设计模式之常用创建模式总结(二)

    前言 设计模式的创建模式终极目标是如何使用最少量最少需要修改的代码,传递最少的参数,消耗系统最少的资源创建可用的类的实例对象. 系列文章 python设计模式之单例模式(一) python设计模式之常 ...

  2. 简介Python设计模式中的代理模式与模板方法模式编程

    简介Python设计模式中的代理模式与模板方法模式编程 这篇文章主要介绍了Python设计模式中的代理模式与模板方法模式编程,文中举了两个简单的代码片段来说明,需要的朋友可以参考下 代理模式 Prox ...

  3. 实例解析Python设计模式编程之桥接模式的运用

    实例解析Python设计模式编程之桥接模式的运用 这篇文章主要介绍了Python设计模式编程之桥接模式的运用,桥接模式主张把抽象部分与它的实现部分分离,需要的朋友可以参考下 我们先来看一个例子: #e ...

  4. python设计模式之责任链模式

    python设计模式之责任链模式 开发一个应用时,多数时候我们都能预先知道哪个方法能处理某个特定请求.然而,情况并非总是如此.例如,想想任意一种广播计算机网络,例如最早的以太网实现.在广播计算机网络中 ...

  5. python设计模式之享元模式

    python设计模式之享元模式 由于对象创建的开销,面向对象的系统可能会面临性能问题.性能问题通常在资源受限的嵌入式系统中出现,比如智能手机和平板电脑.大型复杂系统中也可能会出现同样的问题,因为要在其 ...

  6. python设计模式之修饰器模式

    python设计模式之修饰器模式 无论何时我们想对一个对象添加额外的功能,都有下面这些不同的可选方法. [ ] 如果合理,可以直接将功能添加到对象所属的类(例如,添加一个新的方法) [ ] 使用组合 ...

  7. Python设计模式: 最佳的"策略"模式实践代码

    Python设计模式: 最佳的"策略"模式实践代码 今天抽空看了下流畅的python,发现里面介绍了不少python自带的库的使用实例,用起来非常的优雅. 平时用Python来写爬 ...

  8. 深入探索Java设计模式之构建器模式(五)

    抽丝剥茧 细说架构那些事——[优锐课] 简单的程序不需要大量的设计过程,因为它们只关注有限的解决方案,仅使用几个类.大型程序专注于广泛的设计,该设计比好的设计范例的任何其他属性都更能利用可重用性.宏伟 ...

  9. python设计模式之装饰器模式

    装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...

  10. python 设计模式之装饰器模式 Decorator Pattern

    #写在前面 已经有一个礼拜多没写博客了,因为沉醉在了<妙味>这部小说里,里面讲的是一个厨师苏秒的故事.现实中大部分人不会有她的天分.我喜欢她的性格:总是想着去解决问题,好像从来没有怨天尤人 ...

随机推荐

  1. 【Azure 应用服务】App Service / Function App 修改系统时区为中国时区的办法(Azure中所有服务的默认时间都为UTC时间,转换为北京时间需要+8小时)

    问题描述 在Azure的 App Service / Function App 服务中,如果是在Windows系统中,可以通过添加Application Setting来转换为中国时间(WEBSITE ...

  2. C程序分别实现下列字符阵列的输出

    C程序分别实现下列字符阵列的输出:(https://zhuanlan.zhihu.com/p/443989560    可以参考这个博主写的) 1,左下三角形(代码) 1 #include <s ...

  3. sql99等值&&非等值查询

    1 #二.sql99语法 2 /* 3 语法 4 SELECT 查询列表 5 FROM 表1 别名 [连接类型] 6 JOIN 表2 别名 7 on 连接条件 8 [where 筛选条件] 9 [gr ...

  4. IDEA 报错 project is already registered

    1.环境&背景 有时候IEDA下一个工程中想引入多个项目,只能添加多个modules. 版本:IDEA 2020.2 构建:gradle 2.问题 有时候删掉了某个项目再导入时报错 proje ...

  5. nginx rewrite 语法

    nginx rewrite 语法 一 定义 Rewrite主要实现url地址重写, 以及地址重定向,就是将用户请求web服 务器的地址重新定向到其他URL的过程. 二 语法格式 reweite fia ...

  6. 第12章_MySQL数据类型精讲

    第12章_MySQL数据类型精讲 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. MySQL中的数据类型 类型 类型举例 整数类型 TINYINT. ...

  7. PlacementList must be sorted by first 8 bits of display_id 问题

    问题暂未解决 [37484:0811/103448.115:ERROR:display_layout.cc(551)] PlacementList must be sorted by first 8 ...

  8. 13 种在 JavaScript 中删除/过滤数组的方法【转】

    英文 | https://javascript.plainenglish.io/13-methods-to-remove-filter-an-item-in-an-array-and-array-of ...

  9. 选择单词后 按 ctrl + space 单词发音

    需求: 在ide或其他地方,经常有单词发音不是很确定,但并不要很详细 就听个单词发音. 确定快捷键: 左手单手操作,我键盘上貌似就 左边的ctrl和空格键 还没有设定 翻译软件: 使用 pc端的 欧路 ...

  10. C++实现一个简单的生产者-消费者队列

    本文的代码都是ChatGPT生成,我只是做了微小的调整和整合,AI提示词如下: 设计一个C++类,支持生产者-消费者模型,可以通过size函数获取剩余数量 可能第一次生成的不一定合适,多刷新几次. 生 ...