Python设计模式(五)【建造者模式】

Python 设计模式之建造者模式 只需关注他需要创建的公司是哪种类型的(海外公司还是国内公司,不同类型的公司它的行为和属性是不同的),并且他可以任意的添加他想要的部分(部门,当然这里将这个实现简略为往列表中添加元组,而在其他例子中,可能会用菜品或者零件来替代)。你可能会觉得这个实现看起来更复杂了,确实是这样,这是这种设计模式在简单对象上的缺点,但如果现在这个对象的属性足够复杂,并且需要根据不同的需求生成不同风格的。当你需要创建不同形式的产品时, 其中的一些构造步骤可能需要不同的实现。到此为止,你已经接触了建造者模式的初级版本! 阅读详情

继续写

"""建造者模式"""
#主管者,构造一个使用Builder接口的对象
#调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。
class Director(object):
    def __init__(self):
        self.builder = None

    def construct_building(self):
        #实例化BuildProduct类,self.building = None变成self.building = BuildProduct()
        self.builder.new_building()

        self.builder.build_floor()
        self.builder.build_size()

    def get_building(self):
        return self.builder.building


# 抽象构建器
#给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。
class Builder(object):
    def __init__(self):
        self.building = None

    #新的创建者
    def new_building(self):
        self.building = BuildProduct()

    def build_floor(self):
        raise NotImplementedError

    def build_size(self):
        raise NotImplementedError

#实现构建器
#实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例。
class BuilderHouse(Builder):

    def build_floor(self):
        self.building.floor = '一'

    def build_size(self):
        self.building.size = '大'


class BuilderFlat(Builder):

    def build_floor(self):
        self.building.floor = '超过一层'

    def build_size(self):
        self.building.size = '小'

# 要创建的复杂对象的产品类。
class BuildProduct(object):

    def __init__(self):
        self.floor = None
        self.size = None

    """Python中这个_repr_函数,对应repr(object)这个函数,返回一个可以用来表示对象的可打印字符串"""
    def __repr__(self):
        return '楼层: {0.floor} | 尺寸: {0.size}'.format(self)


#程序主入口
if __name__ == "__main__":
    director = Director()
    #具体实现类实例化抽象接口,并赋值给Director对象里builder属性
    director.builder = BuilderHouse()
    #调用Director对象的construct_building方法,实际是执行BuilderHouse(builder属性)对象的3个方法
    director.construct_building()
    #得到BuildProduct对象
    building = director.get_building()
    #打印对象字符串
    print(building)

    director.builder = BuilderFlat()
    director.construct_building()
    building = director.get_building()
    print(building)

结果如图:

这里写图片描述

Python在建筑领域的应用和教程 Python在建筑领域中有广泛的应用,可以用于建筑信息建模(BIM)、数据分析与可视化、建筑优化与仿真以及自动化工作流程。下面将介绍Python在这些方面的应用,并提供相应的示例代码。Python是一种功能强大且易于学习的编程语言,它在建筑领域中具有广泛的应用。本文将介绍Python在建筑中的应用,并提供相关的教程和示例代码。通过以上示例代码和教程,您可以开始在建筑领域中应用Python编程。通过上述示例代码和教程,您可以开始在建筑领域中应用Python编程。 阅读详情

相关推荐

Python设计模式:建造者模式详解

建造者模式是一种创建型设计模式,通过分步骤构建复杂对象,将对象的构建与表示分离。该模式包含产品、抽象建造者、具体建造者和指挥者四个角色,适用于构建内部结构复杂的对象。Python实现中,以构建电脑为例展示了游戏电脑和办公电脑的不同建造过程。建造者模式的优点包括分步创建、精细控制和代码复用,但会增加系统复杂度。与工厂模式相比,建造者模式更关注对象的构建过程而非简单创建。

数据知道的博客 2678

利用PYTHON创建楼宇或建筑物Shapefile文件

利用PYTHON创建楼宇或建筑物SHAPEFILE文件

qq_44390640的博客 773

93 | Python 设计模式 —— 建造者模式

建造者模式是一种创建型设计模式,它解决了创建复杂对象的问题。在建造者模式中,将一个复杂对象的构建过程和表示分离,使得构建过程可以创建不同的表示。这样,同样的构建过程可以创建不同类型或配置的对象,使得代码更加灵活和易于维护。当需要构建的对象有多个组成部分,且构建过程相对复杂。当希望创建不同类型或配置的对象,但又不希望客户端直接与具体构建过程耦合。建造者模式是一种创建型设计模式,它通过将复杂对象的构建过程与表示分离,使得构建过程可以创建不同的表示。

微信号:RunsenLiu 1657

Python建造者模式介绍、使用方法

1. 概念建造者模式(Builder Pattern)是一种创建型设计模式,它可以将复杂对象的构造与表示分离,使得同样的构建过程可以创建不同的表现形式。该模式通过一步一步创建复杂对象,将对象的构造过程与表示过程解耦。2. 功能建造者模式使得对象的构造过程与其表现形式相互独立,可以灵活地组合不同的构造过程来得到不同的表现形式。3. 优点5. 缺点6. 应用场景7. 使用方式在Python中,可以使用类和方法来实现建造者模式。8. 在应用程序开发中的应用。

captain 1041

【AI Infra】Perfetto性能分析工具指南

Perfetto是一款开源性能分析工具,提供系统级和应用级的活动数据追踪功能。其界面分为四个区域:左侧操作区(包含Trace查看、SQL查询、预置分析等功能)、上方信息区、中间图形化展示区以及下方详细信息区。工具支持快捷键操作(w/s缩放、a/d移动、m标记等),并能高效处理大体积Trace文件。通过Timeline分析可发现性能瓶颈,如案例中update_actor耗时过高的问题,最终定位到CPU offloading导致的MemcpyH2D操作耗时过长,提出了优化方案。Perfetto相比Systrac

baiweizeng的博客 1501

手把手教你用RK3568开发板实现FPGA与Linux的DMA通信(含完整代码解析)

本文详细介绍了如何在RK3568开发板上实现FPGA与Linux系统的DMA通信,包括硬件配置、软件环境搭建、DMA通信原理、驱动开发及性能优化。通过完整的代码解析和实战案例,帮助开发者快速掌握异构系统间的高效数据传输技术,适用于物联网和边缘计算等场景。

weixin_29174385的博客 201

Python设计模式——建造者模式

建造者模式是将一个复杂对象的`构造`与`表示`分离,同样的构建过程可以创建不同的东西。

钟灵毓秀的博客 851

deap数据集的情绪检测代码环境搭建与实现

deap数据数据集很大

f的博客 4157

【python设计模式】4、建造者模式

建造者模式的哲学思想是将复杂对象的创建过程分解成多个简单的步骤,并将这些步骤分别封装在一个独立的建造者类中。由于建造者模式将对象构造过程分解为多个步骤,所以如果要创建简单的对象,建造者模式会增加代码的复杂度,使得代码变得更加冗长和难以理解。总之,建造者模式的哲学思想是将复杂对象的创建过程分解成多个简单的步骤,并将其组合方式变得更加灵活,同时将对象的构建与其表示分离开来,以提高代码的可维护性和可扩展性。建造者模式的核心思想是将一个复杂对象的构造过程和它的表示分离开来,使得同样的构造过程可以创建不同的表示。

Htojk的博客 1361

Android应用之【巧妙隐藏桌面图标的进阶方案】

本文详细探讨了Android应用中隐藏桌面图标的进阶方案,解决了传统方法在Android 10及以上版本中出现的黑色图标残留问题。通过Intent-Filter配置和厂商适配技巧,实现子应用真正隐身,同时确保主应用正常启动。适用于企业工具套件、模块化系统等场景,提升用户体验和安全性。

weixin_28363123的博客 504

『言善信』Fiddler工具 — 1、Fiddler介绍与安装

文章目录1、Fiddler简介2、Fiddler功能3、Fiddler工作原理4、Fiddler安装 1、Fiddler简介 Fiddler是强大的抓包工具之一,它能记录所有客户端和服务器之间的HTTP和HTTPS请求,是web调试的利器。 Fiddler是位于客户端和服务端之间的HTTP代理,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改。 Fiddler可以抓取支持HTTP代理的任意程序的数据包,如果要抓取https会

繁华似锦Fighting 1462

(五)python 设计模式 --- 建造者模式

相关模式:思路和模板方法模式很像,模板方法是封装算法流程,对某些细节,提供接口由子类修改,建造者模式更为高层一点,将所有细节都交由子类实现。也就是说,将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示(例如 J20 与 歼 J10机体不一样,引擎不一样)。 基本思路 某类产品的构建由很多复杂组件组成; 这些组件中的某些细节不同,构建出的产品表象会略有不...

JaysenLeo 449

Android PMS——概述(一)

PMS(Package Manager Service)是 Android 操作系统的一个重要组件,它负责管理应用程序的包信息以及与应用程序的安装、卸载、权限控制等相关功能,确保应用程序的安全性和稳定性。 Android PMS 负责维护一个应用程序包的清单信息,该清单是一个 XML 文件,包含应用程序的各种元数据,例如应用程序的包名、版本号、权限要求、组件信息等。PMS通过访问该清单文件来获取应用程序的信息。 此外,Android PMS 还负责应用程序的安装和卸载。在安装应用

小旭的专栏 1664

设计模式Python版 建造者模式

介绍了GOF设计模式中的建造者模式,以及用Python实现建造者模式的示例。

分享、交流、合作 1806

Python 爬虫实战:Twitter 数据定向抓取(特定话题 + 用户推文爬取与分析)

在社交媒体研究、舆情监测和市场分析等领域,Twitter 数据具有极高的价值。本文将详细介绍如何使用 Python 构建一个完整的 Twitter 数据爬取系统,包括特定话题和用户推文的爬取与分析。我们将涵盖从认证到数据存储、清洗、分析和可视化的全流程。

u014481728的博客 1033

uniApp微信小程序:利用live-pusher人脸活体检测功能+完整示例代码,uniapp使用live-pusher直播推流组件实现人脸验证-活体检测,检测人脸中的动作包括眨眼、张嘴、左右摇头动作

UniApp 使用 live-pusher 实现人脸活体检测(附完整源码)uniapp开发微信小程序人脸检测活体检测,在uni-app的微信小程序项目中使用live-pusher实现人脸识别,uniapp使用live-pusher实现模拟人脸识别效果,张张嘴、眨眨眼、向左摇头、向右摇头等动作,免费使用人脸活体检测的插件方案,uniapp小程序怎么免费使用人脸活体,直播推流,UNIAPP微信小程序使用live-pusher实现人脸识别(拍照)功能,在uni-app项目中实现人脸识别,既使用uni-app中的l

✅ 精选推荐文章 3013

Python设计模式:建造者模式

什么是建造者模式 创建一个由多个部分构成的对象,而且构成需要一步步完成只有当各部分都创建好,这个对象才算是完整的。 此模式有两个参与者:建造者和指挥者 建造者负责创建复杂对象的各个组成部分 指挥者是使用一个建造者实例控制建造的过程 使用场景 知道一个对象必须经过多个步骤来创建,并且要求同一个构造过程可以产生不同的表现,就可以使用建造者模式 建造者模式和工厂模式的差别: 工厂模式以单个步骤创建对象,...

生活屁颠过的博客 2万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python设计模式 - 建造者模式

建造者模式是一种创建型设计模式,主要用于构建包含多个组成部分的复杂对象。它将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的对象表示。

mofei 1165

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python设计模式-建造者模式

建造者模式(Builder Pattern)是一种创建型设计模式,它允许你分步骤创建复杂对象。该模式的主要目的是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是Python中非常有用的创建型设计模式,特别适合需要分步骤构建复杂对象的场景。Python的动态特性使得建造者模式的实现更加灵活和优雅。通过合理使用建造者模式,可以使代码更加清晰、可维护,并提高对象的创建灵活性。在实际开发中,应根据具体需求决定是否使用建造者模式,避免过度设计。

Aerkui的博客 1254

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

23种Python设计模式之建造者模式详解

十分钟速学Python建造者模式

weixin_51098806的博客 4223

【设计模式】Python 设计模式之建造者模式(Builder Pattern)详解

建造者模式是一种创建型设计模式,用于将一个复杂对象的构建过程分解为多个步骤,并通过一个**指挥者(Director)**来按照这些步骤来构造对象。建造者模式的核心思想是将对象的构造与对象的表示(如何创建对象)分离开来,使得同样的构建过程可以生成不同类型或配置的对象。房子是我们需要构建的复杂对象,因此我们首先定义一个House类。接下来,定义Builder抽象类,它包含构建房子不同部分的抽象方法。passpasspasspasspassDirector类负责控制构建过程,它接受一个Builder。

h1773655323的博客 1853

【再谈设计模式】建造者模式~对象构建的指挥家

建造者设计模式在处理复杂对象创建方面有着独特的优势,通过合理的运用可以提高代码的质量和可维护性,并且在需要定制化创建对象的场景下非常实用。

wnm23的专栏 1348

Python 设计模式 - 建造者模式

建造者模式 学习笔记

weixin_42817311的博客 1460

浅谈Python设计模式 - 建造者模式

  声明:本系列文章主要参考《精通Python设计模式》一书,并且参考一些资料,结合自己的一些看法来总结而来。   建造者模式   当我们想要创建一个由多个部分构成的对象,而且他们的构建需要一步接一步的地完成,只有当各个部分都创建好,这个对象才算完整。 -- 这正是 建造者设计模式的用武之地。   根据《精通Python设计模式》介绍,建造者模式通常用于补充工厂模式的...

an999999的博客 228

设计模式之建造者模式

建造者模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。这种模式将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。举一个简单的例子:假设我们要创建一个复杂的对象,例如一辆汽车,它由多个部分组成,包括引擎、车身、轮胎等。如果我们使用传统的创建方式,我们需要在代码中定义一个汽车类,并在其中定义各个部分的方法和属性。但是,这种方式会使得代码变得非常复杂和难以维护。而使用建造者模式,我们可以将汽车的创建过程分解为多个步骤,每个步骤由一个独立的建造者类负责。首先,我们可以定义一个汽车接口,

凡夫编程 1297

python 实现 建造者模式

本文目录地址 本文代码地址 想象一下,我们想要创建一个由多个部分构成的对象,而且它的构成需要一步接一步地完成。只有当各个部分都创建好,这个对象才算是完整的。这正是建造者设计模式(Builder design pattern)的用武之地。建造者模式将一个复杂对象的构造过程与其表现分离,这样,同一个构造过程可用于创建多个不同的表现。 我们来看个实际的例子,这可能有助于理解建造者模式的目的。假设我...

hbu_pig的专栏 1664
上一篇: Python设计模式(四)【桥接模式】
下一篇: 使用EF CodeFirst根据实体类生成数据库
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值