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

普洱做网站的报价wordpress用户邮箱验证码

普洱做网站的报价,wordpress用户邮箱验证码,自建小程序商城,编制网站建设策划书说明#xff1a; 模板方法模式时行为模式中比较简单的设计模式之一。模板方法关注这样的一类行为#xff1a;该类行为在执行过程中拥有大致相同的动作次序#xff0c;只是动作在实现的具体细节上有所差异。例如#xff1a;泡茶和泡咖啡#xff0c;泡茶#xff1a;把水煮沸…说明 模板方法模式时行为模式中比较简单的设计模式之一。模板方法关注这样的一类行为该类行为在执行过程中拥有大致相同的动作次序只是动作在实现的具体细节上有所差异。例如泡茶和泡咖啡泡茶把水煮沸沸水加入茶叶把倒进杯子。泡咖啡把水煮沸用沸水冲咖啡粉把咖啡倒进杯子。这样看来泡茶和泡咖啡的三个步骤基本相似。我们可以报这一类行为抽象成一个算法并将其中的动作序列按1其先后顺序也抽象出来作为该算法的一些步骤。至于这些步骤的实现细节则有算法的子类去实现。 模板方法模式定义一个操作中算法的框架而将一些步骤延迟到子类中。模板方法模式使得子类不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式 是一种基于继承的代码复用技术 将一些复杂流程的实现步骤封装在一系列基本方法中 在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序而通过其子类来覆盖某些步骤从而使得相同的算法框架可以有不同的执行结果。模板方法模式的结构 模板方法模式包含以下两个角色 AbstractClass抽象类 ConcreteClass具体子类 模板方法模式的实现 模板方法 (Template Method) 基本方法 (Primitive Method) 1、抽象方法(Abstract Method)2、 具体方法(Concrete Method) 3、钩子方法(Hook Method) “挂钩”方法和空方法 实例 投资股票是种常见的理财方式我国股民越来越多实时查询股票的需求也越来越大。今天我们通过一个简单的股票查询客户端来认识一种简单的设计模式模板模式。 根据股票代码来查询股价分为如下几个步骤登录、设置股票代码、查询、展示。 #构造如下的虚拟股票查询器 classStockQueryDevice(): stock_code0stock_price0.0 deflogin(self,usr,pwd):pass defsetCode(self,code): self.stock_codecodedefqueryPrice(self):pass defshowPrice(self):pass #根据不同的查询机构和方式来通过继承的方式实现其的股票查询器类。#WebA和WebB的查询器类可以构造如下 classWebAStockQueryDevice(StockQueryDevice):deflogin(self,usr,pwd):if usrmyStockA and pwdmyPwdA:print Web A:Login OK... user:%s pwd:%s%(usr,pwd)returnTrueelse:print Web A:Login ERROR... user:%s pwd:%s%(usr,pwd)returnFalsedefqueryPrice(self):print Web A Querying...code:%s%self.stock_code self.stock_price20.00 defshowPrice(self):print Web A Stock Price...code:%s price:%s%(self.stock_code,self.stock_price)classWebBStockQueryDevice(StockQueryDevice):deflogin(self,usr,pwd):if usrmyStockB and pwdmyPwdB:print Web B:Login OK... user:%s pwd:%s%(usr,pwd)returnTrueelse:print Web B:Login ERROR... user:%s pwd:%s%(usr,pwd)returnFalsedefqueryPrice(self):print Web B Querying...code:%s%self.stock_code self.stock_price30.00 defshowPrice(self):print Web B Stock Price...code:%s price:%s%(self.stock_code,self.stock_price)#在场景中想要在网站A上查询股票 if __name____main__: web_a_query_devWebAStockQueryDevice() web_a_query_dev.login(myStockA,myPwdA) web_a_query_dev.setCode(12345) web_a_query_dev.queryPrice() web_a_query_dev.showPrice() 打印结果 Web A:Login OK... user:myStockA pwd:myPwdA Web A Querying...code:12345 Web A Stock Price...code:12345 price:20.0 但是发现每次操作都会调用登录设置代码查询展示这几步是不是有些繁琐既然有些繁琐何不将这几步过程封装成一个接口。由于各个子类中的操作过程基本满足这个流程所以这个方法可以写在父类中。 classStockQueryDevice(): stock_code0stock_price0.0 deflogin(self,usr,pwd):pass defsetCode(self,code): self.stock_codecodedefqueryPrice(self):pass defshowPrice(self):pass defoperateQuery(self, usr, pwd, code):if notself.login(usr, pwd):returnFalse self.setCode(code) self.queryPrice() self.showPrice()returnTrueclassWebAStockQueryDevice(StockQueryDevice):deflogin(self,usr,pwd):if usrmyStockA and pwdmyPwdA:print(Web A:Login OK... user:%s pwd:%s%(usr,pwd))returnTrueelse:print(Web A:Login ERROR... user:%s pwd:%s%(usr,pwd))returnFalsedefqueryPrice(self):print(Web A Querying...code:%s%self.stock_code) self.stock_price20.00 defshowPrice(self):print(Web A Stock Price...code:%s price:%s%(self.stock_code,self.stock_price))classWebBStockQueryDevice(StockQueryDevice):deflogin(self,usr,pwd):if usrmyStockB and pwdmyPwdB:print(Web B:Login OK... user:%s pwd:%s%(usr,pwd))returnTrueelse:print(Web B:Login ERROR... user:%s pwd:%s%(usr,pwd))returnFalsedefqueryPrice(self):print(Web B Querying...code:%s%self.stock_code) self.stock_price30.00 defshowPrice(self):print(Web B Stock Price...code:%s price:%s%(self.stock_code,self.stock_price))if __name____main__: web_a_query_devWebAStockQueryDevice() web_a_query_dev.operateQuery(myStockA,myPwdA,12345) 打印结果相同 Web A:Login OK... user:myStockA pwd:myPwdA Web A Querying...code:12345 Web A Stock Price...code:12345 price:20.0 模式优点 在父类中形式化地定义一个算法而由它的子类来实现细节的处理在子类实现详细的处理算法时并不会改变算法中步骤的执行次序 。提取了类库中的公共行为将公共行为放在父类中而通过其子类来实现不同的行为。 可实现一种反向控制结构通过子类覆盖父类的钩子方法来决定某一特定步骤是否需要执行 更换和增加新的子类很方便符合单一职责原则和开闭原则 模式缺点 需要为每一个基本方法的不同实现提供一个子类如果父类中可变的基本方法太多将会导致类的个数增加系统会更加庞大设计也会更加抽象可结合桥接模式 模式适用环境 一次性实现一个算法的不变部分并将可变的行为留给子类来实现 。各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 需要通过子类来决定父类算法中某个步骤是否执行实现子类对父类的反向控制 另外 在模板方法模式中子类不显式调用父类的方法而是通过覆盖父类的方法来实现某些具体的业务逻辑父类控制对子类的调用这种机制被称为好莱坞原则(Hollywood Principle)好莱坞原则的定义为“不要给我们打电话我们会给你打电话(Don‘t call us, we’ll call you)”。在模板方法模式中好莱坞原则体现在子类不需要调用父类而通过父类来调用子类将某些步骤的实现写在子类中由父类来控制整个过程。
http://www.yutouwan.com/news/168769/

相关文章:

  • 零食店网站构建策划报告网站301和302
  • 哪里可以在百度做网站石家庄做网站建设的公司排名
  • 兴义网站建设公司做服装要看国外哪些网站
  • seo网站三种链接全国企业信息查询网
  • ps做的网站怎样在dw里打开山东建设机械协会官方网站
  • 51网站一起做网店安庆市建设银行网站
  • 什么是网站建设需求wordpress 电子书插件
  • 网站关键字设置海口网站建设公司哪家好
  • 百度资料怎么做网站WordPress回车按钮
  • 各大免费推广网站linux wordpress路径
  • 购物网站是用什么软件做的wordpress登录的图片
  • 淘宝网站建设那么便宜做网站 php python
  • 教育类集群网站建设做化妆品注册和注册的网站吗
  • 北京西站地铁是几号线开网站建设公司赚钱吗
  • 网站设计区域台州网页设计公司
  • 做爰全过程免费的视频的网站wordpress自动生成手机端
  • 室内设计公司免费网站网站建设排名北京
  • 花都网站建设价格wordpress修改地址
  • 青岛房地产网站建设做网站笔记本
  • 计算机网络技术网站开发网站的推广方式有哪些
  • 网站建设系统服务介绍做素食的网站
  • 网站开发培训少儿建设的网站打开速度很慢
  • 国外html 网站网站建设解决方案
  • 找别人做网站要考虑哪些如何seo推广工厂店
  • 免费注册网站怎么做链接p2p视频网站建设
  • 目前做响应式网站最好的cms网站建设布为网
  • 兰州新区建设局网站地址页面设计要求
  • 成都城乡建设部网站首页上海建设执业资格注册中心网站
  • 广东万高建设网站免费软件版免费下载
  • 嵌入式网站开发做平台网站怎么赚钱