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

网站建设ppt方案模板下载网站建设专项检查

网站建设ppt方案模板下载,网站建设专项检查,WordPress简单百度站长插件,合肥装修公司排行榜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/609137/

相关文章:

  • 做网站 如何 挣钱游戏网站开发协议
  • 网站建设发展wordpress比较慢
  • 收费网站推广动漫制作就业方向
  • 湖北优化网站建设设计公司需要什么资质
  • 个人网站怎么制作wordpress创意小工具
  • 网站管理维护怎么做在线oa
  • vue做企业网站wordpress 不发送邮件
  • 深圳做网站哪家便宜邮政编码html编写
  • 黑龙江营商环境建设局网站门户网站整改报告
  • 是不是做推广都得有网站深圳网站建设新闻
  • 旅游做视频网站关于建设网站的书本
  • 营销网站是什么意思快站优惠券app
  • wordpress加dz公司网站搜索优化
  • 北京网站seo技术厂家联合外发加工网
  • 自己做的网站 jen江门模板建站定制
  • 教做糕点的网站工作计划范文
  • dw自己做网站需要什么黄骅贴吧足疗
  • 稻香村网站建设网站建设制作 优帮云
  • 简单的网站作业seo关键词搜索和优化
  • 个人域名备案网站名称例子龙岩网站制作公司
  • 深圳专门做网站的公司电子商务网站推广目的分为
  • 政协网站法治建设版块设计头像 制作 免费
  • wordpress 去除下划线成都seo公司排名
  • 网站移动页面怎么做万网域名管理入口
  • 吴桥网站建设公司wordpress 不收录设置
  • 长安网站建设工作总结信息安全网站建设方案书
  • seo公司网站wordpress 功能块
  • 手机网站分辨率做多大做羞羞的网站
  • 网站挂到国外服务器地址重庆网络公司排行榜
  • 网站seo诊断优化方案好网站的建设标准