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

传奇网站怎么做微信小程序app下载

传奇网站怎么做,微信小程序app下载,电子商务网站建设品牌,用模块做网站当我们需要创建一个非常复杂的对象时,可以使用建造者模式,分步骤建造一个对象,最后将完整的对象返回给客户端。 比如,我们要生成一个房子对象,建造一个房子,需要打地基、盖围墙、盖地板、安装门、安装窗户…

当我们需要创建一个非常复杂的对象时,可以使用建造者模式,分步骤建造一个对象,最后将完整的对象返回给客户端。

比如,我们要生成一个房子对象,建造一个房子,需要打地基、盖围墙、盖地板、安装门、安装窗户,有的房子还要盖车库,有的房子还要盖花园,有的房子要盖游泳池,有的。。。总之,房子是个很复杂的对象,涉及上百种不同的配置。

如果我们直接用房子类来创建房子对象,则需要输入几百参数:地基参数、围墙参数、地板参数、门参数、窗户参数,车库参数、花园参数、泳池参数。。等等几百个参数。

参数众多是一个问题,还有一个问题是,可能绝大多数房子用其中一小部分参数就可以了,其他大部分参数则都是压根用不到的,比如有的房子它不要车库,不要花园,不要泳池,那我们如果直接使用房子类来创建房子对象,这么多参数不就是多此一举了吗?

此时,则适宜使用建造者模式。建造者模式中的关键角色是建造者,建造者就像我们现实世界中的工程队一样,它拥有打地基、盖围墙、盖地板等等所有盖房子的众多方法,而我们用户端,则根据我们客户的需要,仅调用我们需要的方法即可。

更进一步,我们可以引入一个建造者主管的角色,建造者主管能够记住我们客户经常调用的建造者技能,比如建造市面上常用的三室一厅的房子,以前我们客户每需要一个三室一厅的房子,需要告诉建造者应该先打地基,再盖地板,再。。。,现在有了建造者主管这个角色,我们客户只需要告诉建造者主管,我需要一个三室一厅的房子就可以了,主管会安排建造者如果使用建造的方法。

建造者模式基本的逻辑就这么多了,这里需要补充两个容易遗漏的点:1,建造者需要有交付房子的方法,这样才能给客户端返回客户需要的房子。2,建造者需要有reset的方法,这样下一个客户调用建造者盖房子时,建造者就会从头开始盖,而不是在上一个房子的基础上继续盖。

实现代码如下:

"""
我们来思考如何创建一个 房屋House对象。 建造一栋简单的房屋, 首先你需要建造四面墙和地板, 安装房门和一套窗户, 然后再建造一个屋顶。
但是如果你想要一栋更宽敞更明亮的房屋, 还要有院子和其他设施 (例如暖气、 排水和供电设备), 那又该怎么办呢?
"""
from abc import ABC,abstractmethod# 建造者父类
class Builder(ABC):def __init__(self):self.house = House()@abstractmethoddef build_base(self,number):pass@abstractmethoddef build_wall(self,number):pass@abstractmethoddef build_roof(self,number):pass@abstractmethoddef build_door(self,number):pass@abstractmethoddef build_window(self,number):pass@abstractmethoddef build_garage(self,number):pass@abstractmethoddef build_swimming_pool(self,number):pass@abstractmethoddef build_garden(self,number):pass@abstractmethoddef deliver_house(self):passdef reset(self):self.house.parts.clear()class House:def __init__(self):self.parts = []def add(self,facilities):self.parts.append(facilities)def show(self):return f'This house has {','.join(self.parts)}'# 这是一个建造廉价房子的建造者,他会使用廉价的材料盖房子
class CheapBuilder(Builder):def __init__(self):super().__init__()def build_base(self,number):self.house.add(f'{number} cheap bases')def build_wall(self,number):self.house.add(f'{number} cheap walls')def build_roof(self,number):self.house.add(f'{number} cheap roofs')def build_door(self,number):self.house.add(f'{number} cheap doors')def build_window(self,number):self.house.add(f'{number} cheap windows')def build_garage(self,number):self.house.add(f'{number} cheap garages')def build_swimming_pool(self,number):self.house.add(f'{number} cheap swimming pools')def build_garden(self,number):self.house.add(f'{number} cheap gardens')def deliver_house(self):return self.house.show()# 这是一个建造中等质量房子的建造者
class MiddleBuilder(Builder):def __init__(self):super().__init__()def build_base(self, number):passdef build_wall(self, number):passdef build_roof(self, number):passdef build_door(self, number):passdef build_window(self, number):passdef build_garage(self, number):passdef build_swimming_pool(self, number):passdef build_garden(self, number):passdef deliver_house(self):pass# 这是一个建造高档房子的建造者
class UpscaleBuilder(Builder):def __init__(self):super().__init__()def build_base(self, number):passdef build_wall(self, number):passdef build_roof(self, number):passdef build_door(self, number):passdef build_window(self, number):passdef build_garage(self, number):passdef build_swimming_pool(self, number):passdef build_garden(self, number):passdef deliver_house(self):pass# 这是建造者主管
class Director:# 这是主管记住的建造基本房子的方案def build_basic_house(self,builder):builder.build_base(1)builder.build_roof(1)builder.build_wall(4)builder.build_window(1)builder.build_door(1)# 这是主管记住的建造最流行的房子的方案def build_popular_house(self,builder):builder.build_base(1)builder.build_roof(1)builder.build_wall(4)builder.build_window(2)builder.build_door(1)builder.build_garage(1)class Client:def __init__(self,builder):self.director = Director()self.builder = builderdef buy_basic_house(self):self.director.build_basic_house(self.builder)def get_house(self):return self.builder.deliver_house()if __name__ == "__main__":client = Client(CheapBuilder())client.buy_basic_house()print(client.get_house())

以下是运行结果:
在这里插入图片描述


文章转载自:

http://Qs9pkstN.wbyqy.cn
http://l9TggKcN.wbyqy.cn
http://UlV0pKad.wbyqy.cn
http://QN2BrVMF.wbyqy.cn
http://2Yksnawb.wbyqy.cn
http://h2wWvVe8.wbyqy.cn
http://GJ5tUoNz.wbyqy.cn
http://r6JH4QWh.wbyqy.cn
http://WhqutVi2.wbyqy.cn
http://DALXkVuz.wbyqy.cn
http://Tmentc1W.wbyqy.cn
http://wTSzquOA.wbyqy.cn
http://6W9QILQl.wbyqy.cn
http://ui6AhJ2j.wbyqy.cn
http://smA8CXIl.wbyqy.cn
http://VMl72hSx.wbyqy.cn
http://9ZkQwgrW.wbyqy.cn
http://W1hS52qL.wbyqy.cn
http://kE1VU1Mz.wbyqy.cn
http://lbRe0yrH.wbyqy.cn
http://ESPYKcHf.wbyqy.cn
http://39ADNvyw.wbyqy.cn
http://WodRM6TI.wbyqy.cn
http://wDqDEzqT.wbyqy.cn
http://6WUqoVp7.wbyqy.cn
http://6AI27sWg.wbyqy.cn
http://MzMoqG6b.wbyqy.cn
http://sod0ErDN.wbyqy.cn
http://jnOGdFqz.wbyqy.cn
http://xABRabCe.wbyqy.cn
http://www.dtcms.com/wzjs/719896.html

相关文章:

  • 帝国cms7.0模板 绿色企业网站模板(整站带数据)营销的手段和方法
  • 南通模板建站定制工业设计公司报价
  • 游戏排行榜2022手游南宁seo全网营销
  • 常州辉煌网络网站制作百度排行榜风云榜
  • 做软件赚钱吗seo建站
  • 安徽经工建设集团网站自己建网站程序
  • 福步论坛合肥网站搜索引擎优化
  • 山东建设人才网站seo指搜索引擎
  • 云南微网站制作哪家好wordpress主页归档
  • 珍岛网站模板何谓网络营销
  • 建设网站出现400错误wordpress加速优化插件
  • 阅读网站建设福建省建设执业注册管理中心网站
  • 上海建设银行官网网站6黄页号码怎么取消标记
  • 赚钱软件的套路保定seo网络推广
  • 公司专业网站建设杭州 兼职 网站建设
  • 百度一下百度网站网站开发网站页面
  • 品牌网站建设只询大蝌蚪想要网站推广页面
  • 桐乡城市建设局网站亳州网站制作
  • seo 网站推广网站推广案例
  • 网站制作网络推广价格微信公众平台网站开发
  • asp 网站卡死重庆直播网站平台建设
  • 网站建设运营维护啥意思广州网站建站公司
  • 电子商务网站开发是指山西网站建设开发
  • 设计网站推荐html代码旅游景区门户网站建设规划方案
  • 网站设计论文的参考文献网络服务的服务提供者包括( )
  • 网站空间邮箱想买手表在哪个网站买是正品
  • 网站项目报价wordpress登入后缀
  • 网页游戏网站打不开免费网站整站模板源码
  • 网站首页列表布局设计网站全局变量
  • 展示页网站怎么做排名php网站开发好学吗