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

农村小学校园网站建设方案天心区网站建设

农村小学校园网站建设方案,天心区网站建设,深圳公司注册核名官网,湖南省建设厅208号文设计模式最大的作用就是在变化和稳定中间寻找隔离点#xff0c;然后分离它们#xff0c;从而管理变化。将变化像小兔子一样关到笼子里#xff0c;让它在笼子里随便跳#xff0c;而不至于跳出来把你整个房间给污染掉。 设计思想 将行为想象为一族算法#xff0c;定义算法族… 设计模式最大的作用就是在变化和稳定中间寻找隔离点然后分离它们从而管理变化。将变化像小兔子一样关到笼子里让它在笼子里随便跳而不至于跳出来把你整个房间给污染掉。 设计思想 将行为想象为一族算法定义算法族分别封装起来让他们之间可以互相替换使得算法的变化独立于使用算法的客户。 业务场景 假定现在让你设计一个鸭子类模仿这个世界上所有的鸭子你会怎么做 你可能会说使用继承先定义一个Duck父类然后写一些函数display表现鸭子的模样fly表现鸭子的飞行动作quack表现鸭子的叫声…然后再写一些类去继承这个父类一个一个重写父类的函数模仿每种鸭子不同的长相飞行行为和叫声。 如果你是一个初学者你能想出这些并不奇怪问题也确确实实解决了但却并不是最佳方法。这种设计会造成大量的函数重复比如世界上现在有10种鸭子有4种鸭子的模样一模一样另外3种一模一样剩下的一模一样而你却要一个一个去重复写display函数这种设计也并不利于未来的业务发展比如现在你用继承完成了所有的鸭子设计某一天科学家又宣布新发现10种鸭子而你还是要继续改动你的代码不断的重写不断的继承。很快你就会发现继承并不是一个好办法。 刚开始出现继承这种机制的时候很多程序员便很喜欢用这种方法解决问题。因为这很符合我们以往的认知习惯某某人的儿子可以使用父亲手中的资源这种使用似乎“理所应当”很顺其自然的一件事。但是写代码的时候你就会发现继承能做的事情往往组合也能实现并且有时候会比用继承更好。 我们写程序的一个目标叫软件复用如果你的代码里出现很多一模一样的函数显然并不是一份很好的设计。而正如世界一样我们的代码也需要与时俱进否则就会死亡。一份程序在刚写好的时候仅仅是开始后期花在维护改进更新上的时间要远远多于刚开始开发的时间这些就是所谓的“change”正是这些变化才造成了你不断的加班正如前面让你设计鸭子类一样某天新发现10种鸭子而你为了完成设计可能就要被迫加班。 那么应该采取什么样的设计才能有效的抵御变化少加班呢 我们有一个设计原则叫做找出应用中可能需要变化之处把他们独立出来不要和稳定的代码混在一起。 换句话说如果每次新的需求依赖都会使某些方面的代码发生变化那么你就可以确定这部分的代码需要被抽离和其他稳定的代码有所区分。也就是说把会变化的部分取出并封装起来以便以后可以轻易地改动以扩充此部分而不影响其它部分。 这个概念很简单几乎是每个设计模式背后的精神所在。所有的设计模式都提供了一套方法让“系统中的某部分改变不会影响其它部分”。 策略模式代码案例 封装飞行行为 class FlyBehavior { public:virtual void fly() 0; };class FlyWithWings : public FlyBehavior { public:void fly(){cout Fly with Wings... endl;} };class FlyNoway : public FlyBehavior { public:void fly(){cout i can not fly... endl;} };class FlyWithRockets : public FlyBehavior { public:void fly(){cout Fly with Rockets... endl;} };封装叫声行为 class FlyBehavior { public:virtual void fly() 0; };class FlyWithWings : public FlyBehavior { public:void fly(){cout Fly with Wings... endl;} };class FlyNoway : public FlyBehavior { public:void fly(){cout i can not fly... endl;} };class FlyWithRockets : public FlyBehavior { public:void fly(){cout Fly with Rockets... endl;} };duck类委托飞行行为与叫声行为 class Duck { public:FlyBehavior* flyBehavior;QuackBehavior* quackBehavior;void speak(){flyBehavior-fly();quackBehavior-quack();}Duck(FlyBehavior* fly, QuackBehavior* quack){this-flyBehavior fly;this-quackBehavior quack;} };实现具体的鸭子 class Duck1 : public Duck { public:Duck1(FlyBehavior* fly, QuackBehavior* quack) : Duck(fly, quack) {} };
http://www.zqtcl.cn/news/273935/

相关文章:

  • 黄山建设网站公司电话wordpress微信分享图
  • 大数据网站网站的备案流程图
  • 如果自己做网站wordpress付款插件
  • 网站建设项目的结论网站开发合同适用印花税
  • 网站建设经验与教训普陀网站建设推广
  • 12306网站是是阿里巴巴做的吗专业建网站设计公司
  • 关于申请网站建设经费的请示网推推荐信
  • 网站建设请款报告网站服务器租用价格
  • 贵州建设网老网站手机网站建设运营方案
  • 网站方案范文唐山自助建站模板
  • 金华网站制作网站建设的功能需求
  • 用iis建立网站口碑营销案例分析
  • 注册网站要求线上设计师与线下设计师的区别
  • 个人备案 网站内容网站备案如何查询
  • 宿州科技网站建设百度网站外链发布平台
  • 织梦移动网站wordpress父文章显示不全
  • 游戏攻略网站怎么做网站开发需求确认书
  • 做高大上分析的网站电商到底干嘛的
  • 物流网站哪个好网络推广就找南昌莫非传媒
  • 查看网站空间企业网站管理系统介绍
  • 重庆市工程建设信息网新网站艺术品商城网站开发
  • 上海网站制作商wordpress改主题
  • 钰鸣厦门网站建设2023热点新闻事件
  • 网络营销的主要形式有建设网站免费搭建网站哪个好
  • 建一个网站需要哪些人aso是什么意思
  • 电商网站有哪些淘宝运营培训班哪里有
  • 网站开发网站制作太原优化排名推广
  • 佛山市网站开发桥西区建设局网站
  • 怎么制作网站应用云主机上传wordpress
  • flash网站代做马鞍山网站建设制作公司