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

企业网站未来发展趋势企业网站制作价格

企业网站未来发展趋势,企业网站制作价格,wordpress 网站 上传,广州市提取住房补贴建设银行网站抽象工厂模式的通俗示例 想象一下,你正在经营一家家具店,你需要从不同的供应商那里采购不同的家具系列。有的供应商提供的是现代风格家具,包括现代沙发、现代椅子和现代桌子;而有的供应商提供的是古典风格家具,包括古…

抽象工厂模式的通俗示例

想象一下,你正在经营一家家具店,你需要从不同的供应商那里采购不同的家具系列。有的供应商提供的是现代风格家具,包括现代沙发、现代椅子和现代桌子;而有的供应商提供的是古典风格家具,包括古典沙发、古典椅子和古典桌子。你不想每次都具体指定要采购哪个供应商的哪个具体产品,你只需要告诉你的采购团队你要的是现代风格家具系列或古典风格家具系列。这里的“现代风格家具系列”和“古典风格家具系列”就可以看作是抽象工厂模式中的“对象家族”。

抽象工厂模式的通俗解释

抽象工厂模式是一种设计模式,它提供了一个抽象的接口,让你可以创建一系列相关或相互依赖的对象,而不需要知道这些对象的具体类。在这个模式中,你只需要知道你想要的对象家族(比如现代或古典家具),而具体的对象创建工作则由具体的工厂来完成。

抽象工厂模式的具体说明

  • 抽象工厂(Abstract Factory):这是一个接口,声明了一组用于创建不同抽象产品的方法。在上述例子中,这个接口可以声明创建沙发、椅子和桌子的方法。

  • 具体工厂(Concrete Factory):实现了抽象工厂接口的类,负责创建具体的产品。比如,一个具体工厂可以是“现代家具工厂”,它负责创建现代沙发、现代椅子等;另一个具体工厂可以是“古典家具工厂”,它负责创建古典沙发、古典椅子等。

  • 抽象产品(Abstract Product):这些是一组相关产品的抽象类或接口,每类产品都可能有很多不同的具体实现。在例子中,沙发、椅子和桌子就是抽象产品。

  • 具体产品(Concrete Product):实现了抽象产品接口的具体类。比如,现代沙发、现代椅子是具体产品。

抽象工厂模式的优点是:

  • 分离接口与实现:客户端只需知道它们需要什么样的产品家族,而不必知道具体产品的类。

  • 提高可扩展性:新增产品族时,不需要修改已有系统,只需添加一个新的具体工厂即可。

  • 一致的对象创建:确保创建的对象属于同一风格或主题。

但抽象工厂模式也有缺点:

  • 复杂性增加:理解和实现抽象工厂模式需要更多的时间和精力。

  • 扩展困难:如果需要添加新的产品,可能需要修改抽象工厂和所有具体工厂。

在实际应用中,抽象工厂模式特别适合于那些有多种产品族,且产品族中的产品需要一起使用的情况。

python实践

import abc# 两种小汽车
class Mercedes_C63(object):"""梅赛德斯 C63"""def __repr__(self):return "Mercedes-Benz: C63"class BMW_M3(object):"""宝马 M3"""def __repr__(self):return "BMW: M3"# 两种SUV
class Mercedes_G63(object):"""梅赛德斯 G63"""def __repr__(self):return "Mercedes-Benz: G63"class BMW_X5(object):"""宝马 X5"""def __repr__(self):return "BMW: X5"class AbstractFactory(object):"""抽象工厂类该类是一个抽象类,定义了生产不同类型车辆产品的接口除了能生产小汽车外,还可以生产SUV使用该模式可以将创建不同类型对象的逻辑进行封装,便于扩展和替换具体实现"""# 标记该类为抽象类__metaclass__ = abc.ABCMeta# 定义生产小汽车产品的抽象方法# 该方法没有具体实现,需要由具体的子类根据实际需求实现@abc.abstractmethoddef product_car(self):pass# 定义生产SUV产品的抽象方法# 同样,该方法的具体实现由具体的子类完成@abc.abstractmethoddef product_suv(self):passclass MercedesFactory(AbstractFactory):"""梅赛德斯工厂"""def product_car(self):return Mercedes_C63()def product_suv(self):return Mercedes_G63()class BMWFactory(AbstractFactory):"""宝马工厂"""def product_car(self):return BMW_M3()def product_suv(self):return BMW_X5()if __name__ == '__main__':c1 = MercedesFactory().product_car()s1 = MercedesFactory().product_suv()print(c1, s1)s2 = BMWFactory().product_suv()c2 = BMWFactory().product_car()print(c2, s2)
http://www.hkea.cn/news/685021/

相关文章:

  • wordpress大流量专业的网站优化公司
  • 做进口零食批发网站百度站长管理平台
  • 网站栏目建设存在的问题关键词简谱
  • 网站备案怎么那么麻烦google chrome 网络浏览器
  • 小米手机做网站服务器nba东西部最新排名
  • 做写字楼用哪个网站更好郑州seo代理外包
  • 做网站 淘宝营销策划思路
  • 网页设计要用到什么软件聊城seo优化
  • 用wordpress做网站百度推广管理
  • 一个空间可以放两个网站吗html模板网站
  • 做试用网站的原理网站推广优化平台
  • 软件工程培训机构学费亚马逊seo什么意思
  • 做恶搞网站软件有哪些苏州seo怎么做
  • 怎么做微信小说网站企业网络营销策划方案
  • 网站后台上传图片失败百度下载免费安装最新版
  • 镇江做网站需要多少钱企业网站模板设计
  • 西安seo优化系统网页seo
  • 如何用网站模板做网站广州网络营销推广
  • 承德手机网站建设seo推广排名
  • wordpress块引用一个网站可以优化多少关键词
  • 360网站卖东西怎么做的无锡seo优化公司
  • 邢台人民网站百度视频推广怎么收费
  • 常州天启建设公司网站高端快速建站
  • ppt模板免费下载网站不用登录seo测试工具
  • 四川建设人才网官网查询阜新网站seo
  • 太原网站开发定制百度网盘官网下载
  • 业主装修日记那个网站做的好片多多可以免费看电视剧吗
  • 租车网站建设站长之家源码
  • 昌吉州回族自治州建设局网站地产渠道12种拓客方式
  • 北京市网站公司网络项目免费的资源网