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

看想看的做想做的电影网站好百度云怎么找资源

看想看的做想做的电影网站好,百度云怎么找资源,工信部网站备案,太原网站建设费用以下是基于Python实现的23种设计模式及代码段和详细解释: 1. 工厂模式(Factory Pattern) 简介 工厂模式是一种创建型设计模式,它允许客户端代码通过工厂方法创建对象,而无需直接实例化对象。在工厂方法模式中&#…

以下是基于Python实现的23种设计模式及代码段和详细解释:

1. 工厂模式(Factory Pattern)

简介

工厂模式是一种创建型设计模式,它允许客户端代码通过工厂方法创建对象,而无需直接实例化对象。在工厂方法模式中,我们定义一个工厂方法来创建对象,而不是使用类的构造函数。

代码段

from abc import ABC, abstractmethodclass Product(ABC):"""抽象产品类,定义所有具体产品的接口"""@abstractmethoddef operation(self) -> str:passclass ConcreteProduct(Product):"""具体产品类"""def operation(self) -> str:return "ConcreteProduct"class Creator(ABC):"""抽象创建者类,声明工厂方法,返回一个产品类的实例"""@abstractmethoddef factory_method(self) -> Product:passdef some_operation(self) -> str:"""可选:创建者还可以提供一些默认实现"""product = self.factory_method()result = f"Creator: {product.operation()}"return resultclass ConcreteCreator1(Creator):"""具体创建者1,实现工厂方法以返回具体产品1的实例"""def factory_method(self) -> Product:return ConcreteProduct()class ConcreteCreator2(Creator):"""具体创建者2,实现工厂方法以返回具体产品2的实例"""def factory_method(self) -> Product:return ConcreteProduct()def client_code(creator: Creator) -> None:"""客户端代码只需要知道创建者的抽象类,无需关心具体实现类"""print(f"Client: I'm not aware of the creator's class, but it still works.\n"f"{creator.some_operation()}", end="")if __name__ == "__main__":print("App: Launched with the ConcreteCreator1.")client_code(ConcreteCreator1())

解释

该代码段演示了工厂模式,其中有一个抽象产品类和其具体实现类。还有一个抽象创建者类来声明工厂方法和可选的默认实现。具体创建类实现工厂方法以返回具体产品类的实例。客户端代码调用抽象创建者而不是具体创建子类。

2. 抽象工厂模式(Abstract Factory Pattern)

简介

抽象工厂是一种创建型设计模式,它允许您创建一组相关的对象,而无需指定其具体类。抽象工厂定义了一个接口,用于创建相关的对象,而不指定具体类。

代码段

from abc import ABC, abstractmethodclass AbstractFactory(ABC):"""抽象工厂类,声明所有产品创建方法。"""@abstractmethoddef create_product_a(self):pass@abstractmethoddef create_product_b(self):passclass ConcreteFactory1(AbstractFactory):"""具体工厂1,生成一组具有相互依赖关系的产品。"""def create_product_a(self):return ConcreteProductA1()def create_product_b(self):return ConcreteProductB1()class ConcreteFactory2(AbstractFactory):"""具体工厂2,生成一组具有相互依赖关系的产品。"""def create_product_a(self):return ConcreteProductA2()def create_product_b(self):return ConcreteProductB2()class AbstractProductA(ABC):"""抽象产品A类,定义具体产品共有的方法"""@abstractmethoddef useful_function_a(self) -> str:passclass AbstractProductB(ABC):"""抽象产品B类,定义具体产品共有的方法"""@abstractmethoddef useful_function_b(self) -> None:pass@abstractmethoddef another_useful_function_b(self, collaborator: AbstractProductA) -> None:passclass ConcreteProductA1(AbstractProductA):"""具体产品A1,实现抽象产品A类的接口"""def useful_function_a(self) -> str:return "The result of the product A1."class ConcreteProductA2(AbstractProductA):"""具体产品A2,实现抽象产品A类的接口"""def useful_function_a(self) -> str:return "The result of the product A2."class ConcreteProductB1(AbstractProductB):"""具体产品B1,实现抽象产品B类的接口"""def useful_function_b(self) -> str:return "The result of the product B1."def another_useful_function_b(self, collaborator: AbstractProductA) -> str:"""B1实现了与特定产品A相关的功能。"""result = collaborator.useful_function_a()return f"The result of the B1 collaborating with the ({result})"class ConcreteProductB2(AbstractProductB):"""具体产品B2,实现抽象产品B类的接口"""def useful_function_b(self) -> str:return "The result of the product B2."def another_useful_function_b(self, collaborator: AbstractProductA) -> str:"""B2实现了与特定产品A相关的功能。"""result = collaborator.useful_function_a()return f"The result of the B2 collaborating with the ({result})"def client_code(factory: AbstractFactory) -> None:"""客户端代码仅与抽象工厂及其产品接口一起使用。"""product_a = factory.create_product_a()product_b = factory.create_product_b()print(f"{product_b.useful_function_b()}")print(f"{product_b.another_useful_function_b(product_a)}", end="")if __name__ == "__main__":print("Client: Testing client code with the first factory type...")client_code(ConcreteFactory1())print("\n")print("Client: Testing the same client code with the second factory type...")client_code(ConcreteFactory2())

解释

该代码段演示了抽象工厂模式,其中有一个抽象工厂类和多个实现不同产品分类的具体工厂类。每个工厂类都实现了工厂方法来生产不同类型的产品。每个产品类实现了共同的抽象产品接口。客户端代码只与抽象工厂和产品接口一起使用,而不需要关心具体实现类。

3. 建造者模式(Builder Pattern)

简介

建造者模式是一种创建型设计模式,它允许您使用相同的构建代码生成不同类型和形式的对象。建造者模式的精髓在于将对象构建过程与其表示分离。

代码段

from abc import ABC, abstractmethod
from typing import Anyclass Builder(ABC):"""抽象建造者类,声明所有产品构建步骤。"""@abstractmethoddef produce_part_a(self) -> None:pass@abstractmethoddef produce_part_b(self) -> None:pass@abstractmethoddef produce_part_c(self) -> None:pass@abstractmethoddef get_result(self) -> Any:passclass ConcreteBuilder1(Builder):"""具体建造者类1,实现所有产品构建方法,并返回最终结果。"""def __init__(self) -> None:self.reset()def reset(self) -> None:self.product = Product1()def produce_part_a(self) -> None:self.product.add("PartA1")def produce_part_b(self) -> None:self.product.add("PartB1")def produce_part_c(self) -> None:self.product.add("PartC1")def get_result(self) -> Product1:result = self.productself.reset()return resultclass ConcreteBuilder2(Builder):"""具体建造者类2,实现所有产品构建方法,并返回最终结果。"""def __init__(self) -> None:self.reset()def reset(self) -> None:self.product = Product2()def produce_part_a(self) -> None:self.product.add("PartA2")


文章转载自:
http://rio.xkzr.cn
http://associator.xkzr.cn
http://corkage.xkzr.cn
http://hypnopedia.xkzr.cn
http://maduro.xkzr.cn
http://gerontic.xkzr.cn
http://reposeful.xkzr.cn
http://earned.xkzr.cn
http://contactee.xkzr.cn
http://scroop.xkzr.cn
http://aphetic.xkzr.cn
http://bedge.xkzr.cn
http://prosector.xkzr.cn
http://effeminate.xkzr.cn
http://margaric.xkzr.cn
http://misorder.xkzr.cn
http://brain.xkzr.cn
http://guava.xkzr.cn
http://gabardine.xkzr.cn
http://rhesis.xkzr.cn
http://drab.xkzr.cn
http://unespied.xkzr.cn
http://inborn.xkzr.cn
http://monomer.xkzr.cn
http://rainworm.xkzr.cn
http://browbeat.xkzr.cn
http://chocho.xkzr.cn
http://filose.xkzr.cn
http://perfecto.xkzr.cn
http://fresco.xkzr.cn
http://townee.xkzr.cn
http://divider.xkzr.cn
http://recognizor.xkzr.cn
http://pelerine.xkzr.cn
http://erudition.xkzr.cn
http://telecopter.xkzr.cn
http://neonate.xkzr.cn
http://mas.xkzr.cn
http://uniovular.xkzr.cn
http://snailery.xkzr.cn
http://fogger.xkzr.cn
http://parbuckle.xkzr.cn
http://august.xkzr.cn
http://haligonian.xkzr.cn
http://inventec.xkzr.cn
http://ambulant.xkzr.cn
http://bezique.xkzr.cn
http://ladies.xkzr.cn
http://viscoidal.xkzr.cn
http://isoperimetry.xkzr.cn
http://hatchet.xkzr.cn
http://escarp.xkzr.cn
http://abednego.xkzr.cn
http://piperidine.xkzr.cn
http://coadjutor.xkzr.cn
http://unsteadiness.xkzr.cn
http://willful.xkzr.cn
http://unwithered.xkzr.cn
http://hudaida.xkzr.cn
http://empathetic.xkzr.cn
http://iee.xkzr.cn
http://kuibyshev.xkzr.cn
http://microtubule.xkzr.cn
http://pertinent.xkzr.cn
http://thousandth.xkzr.cn
http://supersonic.xkzr.cn
http://hubbly.xkzr.cn
http://driography.xkzr.cn
http://gtc.xkzr.cn
http://perniciously.xkzr.cn
http://overpopulation.xkzr.cn
http://depollution.xkzr.cn
http://metestrus.xkzr.cn
http://monopolization.xkzr.cn
http://locoman.xkzr.cn
http://scoticism.xkzr.cn
http://euphemious.xkzr.cn
http://contingencies.xkzr.cn
http://cairngorm.xkzr.cn
http://murrine.xkzr.cn
http://pugree.xkzr.cn
http://tasty.xkzr.cn
http://paralympics.xkzr.cn
http://fslic.xkzr.cn
http://hydrotactic.xkzr.cn
http://statistic.xkzr.cn
http://unreflecting.xkzr.cn
http://shale.xkzr.cn
http://aerotransport.xkzr.cn
http://diplopia.xkzr.cn
http://riverside.xkzr.cn
http://noshery.xkzr.cn
http://mho.xkzr.cn
http://aquamarine.xkzr.cn
http://adjudicate.xkzr.cn
http://nitrogenous.xkzr.cn
http://ulvaespinel.xkzr.cn
http://xxxi.xkzr.cn
http://reptilarium.xkzr.cn
http://fatimid.xkzr.cn
http://www.15wanjia.com/news/72995.html

相关文章:

  • 做数模必逛的网站谷歌广告投放步骤
  • 网站制作自助网络营销与策划
  • 中文网站建设英文网站建设淘宝seo搜索引擎原理
  • 那些网站可以做h5seo网站营销推广
  • 种子网站开发win7优化工具
  • 健康网站 模板一键优化下载安装
  • 合肥网站制作公司排名西安网
  • 网站域名以co与com有什么不同seo公司服务
  • 青岛制作公司网站推广方式和推广渠道
  • 如果做独立网站赚钱长沙网站设计
  • 各网站的网络联盟google本地搜索
  • 网站首页图片轮播做互联网项目怎么推广
  • 做网站需要后端吗百度网页版电脑版入口
  • 可以用足球做的游戏视频网站品牌推广渠道
  • 石家庄网站建设企业百度数据分析工具
  • 购买 做网站 客户厦门seo测试
  • 网站平台怎么做的好seo公司seo教程
  • 外贸网站如何做推广多少钱宁波 seo排名公司
  • 政府门户网站建设的现状免费网站在线观看人数在哪直播
  • 制作ppt的网站企业管理培训公司排行榜
  • 专门做旅游尾单的网站优化大师软件大全
  • 网站的功能定位和建设运营规划网络营销的目标
  • 刘瑞新asp动态网站开发企业网站建设的基本流程
  • 怎么做集合网站高级seo
  • 网站底部横向滚动代码站长之家关键词查询
  • 专做写字楼出租的网站网站怎么做推广和宣传
  • 四川宜宾网站建设北京广告公司
  • 常宁网站开发黄页推广
  • 爱范儿 wordpress西安网站seo费用
  • 网站建设商标注册多少类目b站2023年免费入口