在discuz做网站店铺图片设计

张小明 2026/1/11 4:46:58
在discuz做网站,店铺图片设计,企业网站硬件建设方案,网站代码大全Python 中的建造者模式#xff08;Builder Pattern#xff09; 建造者模式是一种创建型设计模式#xff0c;用于将一个复杂对象的构建过程与其表示分离#xff0c;使得同样的构建过程可以创建不同的表示。 核心目的#xff1a; 当一个对象有许多可选参数、配置项#x…Python 中的建造者模式Builder Pattern建造者模式是一种创建型设计模式用于将一个复杂对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示。核心目的当一个对象有许多可选参数、配置项或者构建步骤复杂时使用建造者模式可以让代码更清晰、可读性更高避免出现“ telescoping constructor”超长构造函数问题。典型应用场景创建复杂对象如 HTML、SQL 查询、配置文件、Pizza、电脑配置等需要一步步配置对象的属性同一个构建过程需要产生不同配置的对象构建过程必须保持稳定但最终产品有多种变体建造者模式 vs 工厂模式工厂模式关注“创建什么对象”建造者模式关注“如何一步步构建一个复杂对象”Python 实现示例定制 Pizza我们用一个经典例子——定制披萨来演示建造者模式。fromabcimportABC,abstractmethodfromtypingimportList# 最终产品PizzaclassPizza:def__init__(self):self.size:strself.crust:strself.sauce:strself.cheese:strself.toppings:List[str][]def__str__(self):returnf Pizza: Size:{self.size}Crust:{self.crust}Sauce:{self.sauce}Cheese:{self.cheese}Toppings:{, .join(self.toppings)orNone}.strip()# 抽象建造者classPizzaBuilder(ABC):abstractmethoddefset_size(self,size:str):passabstractmethoddefset_crust(self,crust:str):passabstractmethoddefset_sauce(self,sauce:str):passabstractmethoddefadd_cheese(self,cheese:str):passabstractmethoddefadd_topping(self,topping:str):passabstractmethoddefget_pizza(self)-Pizza:pass# 具体建造者Margherita Pizza BuilderclassMargheritaPizzaBuilder(PizzaBuilder):def__init__(self):self.pizzaPizza()defset_size(self,size:str):self.pizza.sizesizereturnself# 支持链式调用defset_crust(self,crust:str):self.pizza.crustcrustreturnselfdefset_sauce(self,sauce:str):self.pizza.sauceTomato# Margherita 固定番茄酱returnselfdefadd_cheese(self,cheese:str):self.pizza.cheeseMozzarellareturnselfdefadd_topping(self,topping:str):iftopping.lower()basil:self.pizza.toppings.append(topping)returnselfdefget_pizza(self)-Pizza:returnself.pizza# 具体建造者Pepperoni Pizza BuilderclassPepperoniPizzaBuilder(PizzaBuilder):def__init__(self):self.pizzaPizza()defset_size(self,size:str):self.pizza.sizesizereturnselfdefset_crust(self,crust:str):self.pizza.crustcrustreturnselfdefset_sauce(self,sauce:str):self.pizza.saucesaucereturnselfdefadd_cheese(self,cheese:str):self.pizza.cheesecheesereturnselfdefadd_topping(self,topping:str):self.pizza.toppings.append(topping)returnselfdefget_pizza(self)-Pizza:returnself.pizza# 指挥者Director可选用于定义构建顺序classPizzaChef:def__init__(self,builder:PizzaBuilder):self.builderbuilderdefmake_pizza(self,size:str):return(self.builder.set_size(size).set_crust(Thin).set_sauce(Tomato).add_cheese(Mozzarella).get_pizza())# 使用示例if__name____main__:# 方式1使用指挥者标准流程margherita_builderMargheritaPizzaBuilder()chefPizzaChef(margherita_builder)pizza1chef.make_pizza(Large)pizza1.toppings.append(Basil)# 额外添加print(pizza1)# 方式2手动链式构建更灵活Python 中常见pepperoni_builderPepperoniPizzaBuilder()pizza2(pepperoni_builder.set_size(Medium).set_crust(Stuffed).set_sauce(Spicy Tomato).add_cheese(Cheddar).add_topping(Pepperoni).add_topping(Mushrooms).add_topping(Olives).get_pizza())print(pizza2)Python 中的简化版更 PythonicPython 支持链式调用返回 self和默认参数因此可以实现更简洁的建造者classPizza:def__init__(self,sizeMedium):self.sizesize self.crustClassicself.sauceTomatoself.cheeseMozzarellaself.toppings[]defset_crust(self,crust):self.crustcrustreturnselfdefset_sauce(self,sauce):self.saucesaucereturnselfdefadd_topping(self,topping):self.toppings.append(topping)returnselfdef__str__(self):returnf{self.size}{self.crust}pizza with{self.sauce},{self.cheese}, toppings:{self.toppings}# 直接使用无需额外 Builder 类pizza(Pizza(Large).set_crust(Thin).set_sauce(BBQ).add_topping(Chicken).add_topping(Onions))print(pizza)这种方式在 Python 社区更常见因为简洁且易读。建造者模式结构总结角色职责Product复杂对象PizzaBuilder抽象接口定义构建步骤ConcreteBuilder实现具体构建逻辑返回产品Director可选编排构建顺序优点构建过程与表示分离一步步构建代码可读性高支持链式调用Fluent Interface易于扩展新产品类型缺点如果产品简单引入建造者会过度设计需要更多类实际推荐Python 项目中对象参数不多直接用默认参数 可选参数参数中等5-10个用链式方法Fluent Builder参数很多或构建复杂使用完整建造者模式 Director如果你想看其他例子如构建 SQL 查询、HTML 字符串、DataFrame 配置、游戏角色创建等欢迎告诉我
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

有哪些做外贸网站高站网站建设

Sonic数字人项目中的Git分支管理与模型工程实践 在AI生成内容(AIGC)快速渗透各行各业的今天,如何将前沿算法稳定、高效地落地到生产环境,已成为团队面临的核心挑战。以Sonic数字人项目为例——这款由腾讯与浙江大学联合研发的轻量…

张小明 2026/1/10 7:56:54 网站建设

珠海企业建站网站开发知识产权

第一章:Open-AutoGLM本地生活服务预约系统概述Open-AutoGLM 是一个基于大语言模型(LLM)驱动的本地生活服务预约系统,专为提升用户与服务提供者之间的交互效率而设计。该系统融合自然语言理解、智能调度与自动化响应机制&#xff0…

张小明 2026/1/9 20:14:28 网站建设

网站系统定制哪个网站专门做二手的

点击上方“程序员蜗牛g”,选择“设为星标”跟蜗牛哥一起,每天进步一点点程序员蜗牛g大厂程序员一枚 跟蜗牛一起 每天进步一点点33篇原创内容公众号首先要了解Feign是如何进行远程调用的,这里面包括,注册中心、负载均衡、FeignClie…

张小明 2026/1/10 7:56:54 网站建设

做样子的网站个人设计作品集

用 水 来举例子从而理解比特率网络带宽等于水管的容量粗水管,水流大相当于光纤宽带细水管,水流小相当于 4G 网络比特率设置等于水龙头开度水龙头开的大,水流急相当于高比特率水龙头开的小,水流小相当于低比特率网络质量等于水压水…

张小明 2026/1/10 7:56:55 网站建设

做图片能去哪些网站电子商务网站建设步

背景当前,对象存储在云存储、大数据分析、视频流媒体、医疗影像、AI训练、机器学习等领域应用广泛。在云存储场景中,对象存储可高效容纳海量非结构化数据,并提供高扩展性、低成本和高持久性的数据管理服务。项目概览MinIO作为开源对象存储的明…

张小明 2026/1/9 11:21:56 网站建设

自己做的简单网站下载营销型网站建设iop

终极免费存档编辑器:彻底改变你的塞尔达传说旷野之息游戏体验 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 还在为海拉鲁大陆的冒险感到力不从心吗&a…

张小明 2026/1/10 7:56:56 网站建设