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

西安建设网站排名简约风网站首页怎么做

西安建设网站排名,简约风网站首页怎么做,成都短视频运营,想要去国外网站买东西怎么做16种设计模式 1.简单工厂模式 内容:不直接向客户端暴露对象创建的实现细节,而是通过一个工厂来负责创建产品类的实例 角色: 工厂角色(Creator) 抽象产品角色(Product) 具体产品角色(Concrete Product) 优点: 1.隐藏了对象创建的实现细节 2.客户端不需要修改代码 缺点: 1.违…16种设计模式 1.简单工厂模式 内容:不直接向客户端暴露对象创建的实现细节,而是通过一个工厂来负责创建产品类的实例 角色: 工厂角色(Creator) 抽象产品角色(Product) 具体产品角色(Concrete Product) 优点: 1.隐藏了对象创建的实现细节 2.客户端不需要修改代码 缺点: 1.违反了单一职责原则将创建逻辑几种到一个工厂类里 2.当添加新产品时需要修改工厂类代码违反了开闭原则 from abc import ABCMeta,abstractmethod#约束类 class Payment(metaclassABCMeta):abstractmethoddef pay(self,money):passclass Alipay(Payment):def __init__(self,use_huabeiFalse):self.use_huabeiuse_huabeidef pay(self,money):if self.use_huabei:print(花呗支付%s元%money)else:print(支付宝支付%d元%money)class WechatPay(Payment):def pay(self,money):print(微信支付%d元%money)class PaymentFactory:def create_payment(self,method):if methodalipay:return Alipay()elif methodwechat:return WechatPay()elif methodhuabei:return Alipay(use_huabeiTrue)else:raise TypeError(No such payment named %s%method)#client pfPaymentFactory() ppf.create_payment(huabei) p.pay(100)2.工厂方法模式 from abc import ABCMeta,abstractmethod#约束类 class Payment(metaclassABCMeta):abstractmethoddef pay(self,money):passclass Alipay(Payment):def __init__(self,use_huabeiFalse):self.use_huabeiuse_huabeidef pay(self,money):if self.use_huabei:print(花呗支付%s元%money)else:print(支付宝支付%d元%money)class WechatPay(Payment):def pay(self,money):print(微信支付%d元%money)#################################约束具体工厂类 class PaymentFactory(metaclassABCMeta):abstractmethoddef create_payment(self):passclass AlipayFactory(PaymentFactory):def create_payment(self):return Alipay()class WechatFactory(PaymentFactory):def create_payment(self):return WechatPay()class HuabeiFactory(PaymentFactory):def create_payment(self):return Alipay(use_huabeiTrue)#client pfWechatFactory() ppf.create_payment() p.pay(100)优点: 每个具体产品都对应一个具体工厂类不需要修改工厂类代码 隐藏了对象创建的实现细节 缺点: 每增加一个具体产品类就必须增加一个相应的具体工厂类,会增加很多代码有点麻烦 3.抽象工厂模式 优点: 将客户端与类的具体实现相分离 每个工厂创建了一个完整的产品系列使得易于交换产品系列 有利于产品的一致性(即产品之间的约束关系) 缺点: 难以支持新种类的(抽象)产品比较复杂 from abc import ABCMeta,abstractmethod#------抽象产品------ class PhoneShell(metaclassABCMeta):abstractmethoddef show_shell(self):passclass CPU(metaclassABCMeta):abstractmethoddef show_cpu(self):passclass OS(metaclassABCMeta):abstractmethoddef show_os(self):pass#------抽象工厂------ class PhoneFactory(metaclassABCMeta):abstractmethoddef make_shell(self):passabstractmethoddef make_cpu(self):passabstractmethoddef make_os(self):pass#------具体产品------class SmallShell(PhoneShell):def show_shell(self):print(普通手机小手机壳)class BigShell(PhoneShell):def show_shell(self):print(普通手机大手机壳)class AppleShell(PhoneShell):def show_shell(self):print(苹果手机壳)class SnapDragonCPU(CPU):def show_cpu(self):print(晓龙CPU)class MediaTekCPU(CPU):def show_cpu(self):print(联发科CPU)class AppleCPU(CPU):def show_cpu(self):print(苹果CPU)class Android(OS):def show_os(self):print(Android系统)class IOS(OS):def show_os(self):print(IOS系统)#------具体工厂------class MiFactory(PhoneFactory):def make_cpu(self):return SnapDragonCPU()def make_os(self):return Android()def make_shell(self):return BigShell()class HuaweiFactory(PhoneFactory):def make_cpu(self):return MediaTekCPU()def make_os(self):return Android()def make_shell(self):return SmallShell()class IPhoneFactory(PhoneFactory):def make_cpu(self):return AppleCPU()def make_os(self):return IOS()def make_shell(self):return AppleShell()#-------客户端-------- class Phone:def __init__(self,cpu,os,shell):self.cpucpuself.ososself.shellshelldef show_info(self):print(手机信息:)self.cpu.show_cpu()self.os.show_os()self.shell.show_shell()def make_phone(factory):cpufactory.make_cpu()osfactory.make_os()shellfactory.make_shell()return Phone(cpu,os,shell)#p1make_phone(MiFactory()) #p1make_phone(HuaweiFactory()) p1make_phone(IPhoneFactory()) p1.show_info()4.建造者模式 8.适配器模式 内容:将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 两种实现方式: 类适配器:使用多继承 对象适配器:使用组合 14.观察者模式 适用场景: 当一个抽象模型有两方面其中一个方面依赖于另一个方面将这两者封装再独立对象中以使它们可以各自独立地改变和复用 当对一个对象的改变需要同时改变其他对象而不知道具体有多少对象有待改变 当一个对象必须通知其它对象而它又不能假定其它对象是谁换言之你不希望这些对象是紧密耦合的 from abc import ABCMeta,abstractmethod #抽象订阅者 class Observer(metaclassABCMeta):abstractmethoddef update(self,notice):pass#抽象发布者 class Notice:def __init__(self):self.observers[]def attach(self,obs):self.observers.append(obs)def detach(self,obs):self.observers.remove(obs)def notify(self):#推送for obs in self.observers:obs.update(self)#具体发布者 class StaffNotice(Notice):def __init__(self,company_infoNone):super().__init__()self.__company_infocompany_infopropertydef company_info(self):return self.__company_infocompany_info.setterdef company_info(self,info):self.__company_infoinfoself.notify()class Staff(Observer):def __init__(self):self.company_infoNonedef update(self,notice):self.company_infonotice.company_infonoticeStaffNotice(初始公司信息) s1Staff() s2Staff() notice.attach(s1) notice.attach(s2) notice.company_info公司今年业绩非常好,给大家发奖金!! print(s1.company_info) print(s2.company_info) notice.detach(s2) notice.company_info公司明天放假 print(s1.company_info) print(s2.company_info)优点: 1.目标和观察者直接的抽象耦合最小 2.支持广播通信 15.策略模式 内容:定义一系列的算法把它们一个个封装起来并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化 角色: 抽象策略 具体策略 上下文 优点: 1.定义了一系列可重用的算法和行为 2.消除了一些条件语句 3.可以提供相同行为的不同实现 缺点: 客户必须了解不同的策略
http://www.zqtcl.cn/news/354641/

相关文章:

  • 安远做网站做服务网站要多少钱
  • 功能网站模板电商平台项目商业计划书
  • 阿里巴巴国际站入驻费用及条件广州做网站比较好的公司
  • 淄博营销网站建设阳泉营销型网站建设费用
  • 珠海网站开发定制常德网站建设详细策划
  • 做电影网站侵权哈尔滨网站开发
  • 中国联通网站备案系统Wordpress建立空白页面
  • 郑州网站建设 郑州网站制作wordpress删除模板
  • 北京网站设计培训wordpress vps 伪静态
  • 做网站和编程有关系吗seo百家外链网站
  • 网站新闻怎么写最新事故案例100例
  • 网站中的表格seo宣传网站
  • 河南锦路路桥建设有限公司网站网站建设会考什么
  • 高校网站建设研究意义餐饮vi设计案例
  • 触屏手机网站网站建设功能模块价格
  • 类似携程网的网站wordpress文章摘要调用
  • 好网站建设公司开发方案联盟营销的网络营销方式
  • logo免费生成网站洛阳网络建站公司
  • 建设工程部网站百度指数功能
  • 个人网站 商业时事新闻2022最新10月
  • 不会代码 怎么做网站网站视频管理系统
  • 网站空间 流量网上卡片制作
  • 网站排名seo软件机关网站源码
  • 网站手机端页面怎么做手机之家
  • 成都电子商务网站大庆城市投资建设网站
  • 电子商务网站费用wordpress 怎么手动更新
  • 中国空间站设计在轨飞行多少年南昌网站建设风格
  • 用php写的网站有哪些暖暖 视频 在线 观看 高清
  • 云空间网站怎么做海南旅游网网页制作
  • 常宁网站免费的ai作图软件