当前位置: 首页 > wzjs >正文

做影视会员网站网站分享

做影视会员网站,网站分享,网站销售系统怎么做,清河做网站报价模板模式和建造者模式是两种不同的设计模式,下面从定义、结构、应用场景等方面介绍它们的区别,并给出 Python 示例代码。 定义 模板模式:定义了一个操作中的算法骨架,将一些步骤的实现延迟到子类中。这样,子类可以在…

模板模式和建造者模式是两种不同的设计模式,下面从定义、结构、应用场景等方面介绍它们的区别,并给出 Python 示例代码。

定义

  • 模板模式:定义了一个操作中的算法骨架,将一些步骤的实现延迟到子类中。这样,子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
  • 建造者模式:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。它允许你逐步构建一个复杂对象,而不是一次性创建它。

结构与角色

  • 模板模式
    • 抽象类:定义了算法的骨架,包含一些抽象方法和具体方法。抽象方法需要在子类中实现,具体方法则提供了默认的实现。
    • 具体子类:继承抽象类,实现抽象方法,完成算法中特定步骤的具体实现。
  • 建造者模式
    • 抽象建造者:定义了创建产品各个部分的抽象方法。
    • 具体建造者:实现抽象建造者的方法,构建和装配产品的各个部分。
    • 指挥者:负责调用建造者的方法来构建产品。
    • 产品:被构建的复杂对象。

适用场景

  • 模板模式
    • 多个子类有公共的方法,并且逻辑基本相同时。
    • 重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能由各个子类实现。
    • 重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为。
  • 建造者模式
    • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
    • 当构造过程必须允许被构造的对象有不同表示时。

Python 示例代码

模板模式示例
  1. AbstractClass 作为抽象类定义算法骨架 template_method,含默认 step2 及待实现的 step1step3
  2. ConcreteClass1 和 ConcreteClass2 继承该抽象类,实现各自的 step1 和 step3
  3. 主程序创建这两个子类的实例并调用 template_method
  4. 按既定骨架执行不同子类的自定义步骤,实现算法复用与扩展。
# 抽象类
class AbstractClass:def template_method(self):self.step1()self.step2()self.step3()def step1(self):passdef step2(self):print("执行步骤 2 的默认操作")def step3(self):pass# 具体子类
class ConcreteClass1(AbstractClass):def step1(self):print("具体子类 1 执行步骤 1")def step3(self):print("具体子类 1 执行步骤 3")class ConcreteClass2(AbstractClass):def step1(self):print("具体子类 2 执行步骤 1")def step3(self):print("具体子类 2 执行步骤 3")# 使用示例
if __name__ == "__main__":concrete1 = ConcreteClass1()concrete1.template_method()concrete2 = ConcreteClass2()concrete2.template_method()
建造者模式示例 

想象你要组装一台电脑:

  1. 你可以选择不同的CPU、内存、硬盘、显卡等
  2. 组装步骤是固定的(先装主板,再装CPU,然后内存...)
  3. 但每个步骤的具体实现可以不同

建造者模式就是把"组装过程"和"具体零件"分离,这样你可以用相同的组装过程创建不同的电脑配置。

# 产品类 - 最终要构建的复杂对象
class Computer:def __init__(self):self.cpu = Noneself.memory = Noneself.disk = Noneself.gpu = Nonedef __str__(self):return f"Computer配置: CPU={self.cpu}, 内存={self.memory}, 硬盘={self.disk}, 显卡={self.gpu}"# 抽象建造者 - 定义构建步骤
class ComputerBuilder:def __init__(self):self.computer = Computer()def build_cpu(self):passdef build_memory(self):passdef build_disk(self):passdef build_gpu(self):passdef get_result(self):return self.computer# 具体建造者 - 实现具体构建步骤
class GamingComputerBuilder(ComputerBuilder):def build_cpu(self):self.computer.cpu = "Intel i9"def build_memory(self):self.computer.memory = "32GB DDR5"def build_disk(self):self.computer.disk = "1TB SSD"def build_gpu(self):self.computer.gpu = "NVIDIA RTX 4090"class OfficeComputerBuilder(ComputerBuilder):def build_cpu(self):self.computer.cpu = "Intel i5"def build_memory(self):self.computer.memory = "16GB DDR4"def build_disk(self):self.computer.disk = "512GB SSD"def build_gpu(self):self.computer.gpu = "集成显卡"# 指挥者 - 控制构建过程
class Director:def __init__(self, builder):self.builder = builderdef construct(self):self.builder.build_cpu()self.builder.build_memory()self.builder.build_disk()self.builder.build_gpu()return self.builder.get_result()# 客户端代码
if __name__ == "__main__":# 构建游戏电脑gaming_builder = GamingComputerBuilder()director = Director(gaming_builder)gaming_computer = director.construct()print(gaming_computer)# 构建办公电脑office_builder = OfficeComputerBuilder()director = Director(office_builder)office_computer = director.construct()print(office_computer)

总结

  • 模板模式主要关注的是算法的骨架,将一些步骤的实现延迟到子类中,强调的是算法的复用和扩展。
  • 建造者模式主要关注的是复杂对象的构建过程,将构建和表示分离,强调的是对象构建过程的灵活性和可配置性。

http://www.dtcms.com/wzjs/390314.html

相关文章:

  • 崇文手机网站建设上海seo推广服务
  • 免费网站建设无广告关键词挖掘工具爱站网
  • 重庆免费做网站人工智能培训师
  • 咸阳高端网站建设每日一则小新闻
  • 深州做网站公司crm软件
  • 智慧团建管理员登录入口武汉seo优化分析
  • 徐州公司做网站网络营销模式
  • 临沂哪里做网站比较好四川省最新疫情情况
  • 网站备案ip更换seo推广服务哪家好
  • phpcms v9企业网站模板(简洁利于优化)优化设计三年级下册数学答案
  • 自己人网站建设有没有免费的seo网站
  • 温州做网站技术员怎么制作一个网页
  • 做网站 写脚本是什么yandex引擎
  • 免费网站认证百度网盘app下载安装手机版
  • 国家企业信息系统公示网 (全国)关键词优化公司费用多少
  • 云浮疫控动态廊坊seo排名公司
  • 做高考题的网站收录网站排名
  • 承德网站建设规划软文推广案例
  • 广州建站服务环球军事新闻最新消息
  • 大型网站开发的书网站seo推广
  • 网站建设培训教程新手入门到精通谷歌手机网页版入口
  • 站长要维护网站深圳网站设计公司哪家好
  • 网站漏洞解决办法手机百度官网
  • 网站定制的公司哪家好河北网站建设公司排名
  • 旅游网站建设项目seo搜索引擎优化岗位要求
  • 坪山做网站竞价什么意思
  • 如何在第三方网站做推广核心关键词是什么意思
  • 南昌人才网河北百度推广seo
  • 婚恋网站做期货现货贵金属的人精准引流推广
  • 小榄网站专业网站推广优化