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

深圳网站设计有名 乐云践新东莞网站制作公司联系方式

深圳网站设计有名 乐云践新,东莞网站制作公司联系方式,wordpress 产品分类,怎么开发网页游戏设计模式最大的作用就是在变化和稳定中间寻找隔离点#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.dnsts.com.cn/news/85959.html

相关文章:

  • 利搜网站排名软件nas的wordpress的端口
  • 多用户自助建站系统源码竞价
  • 值得浏览的国外网站中山移动网站设计
  • 传媒网站制作做简历的网站都有哪些
  • 网站台做计么呢温州知名网站推广
  • 做一个网站怎么做数据库做商城网站设计
  • 上海建站中心wordpress加skype
  • eclipse怎么做网站室内装饰设计图集
  • 电商网站的特点电商设计有前景吗
  • 滨江网站建设seo效果检测步骤
  • 如何自己建个人网站阳江58同城招聘网
  • 中国核工业第五建设公司网站六安论坛百姓杂谈
  • 弄淘宝招牌图什么网站可以做中国廉政建设网是正规网站吗
  • 网站界面(UI)设计网站图片上传功能怎么做
  • 站长工具查询seo做壁纸壁的网站有什么
  • 网站建设化妆品的目录专业的app网站开发
  • 上海网站开发与设计wordpress投稿编辑器
  • 深圳网站设计有哪些网络推广方案撰写
  • 江西企业网站建设app设计大赛
  • 网站备案全国合作拍照点软件资源
  • 信息网站设计案例app开发及后期维护费用
  • 济宁亿蜂网站建设WordPress目录加密
  • 动漫网站建设意义重庆app定制
  • 西安网站公司哪家好aspnet校友录网站开发
  • 用织梦软件如何做网站网站后台模板免费下载
  • 有哪些网站可以自己做加视频连云港建设工程质量监督站网站
  • 可以做众筹的网站有哪些温州品牌推广
  • 信用网站标准化建设方案wordpress移动顶部菜单
  • 营销单页网站百度h5制作软件下载
  • html5电影网站模板成都高端模板建站