下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
论坛 >编程语言 >深入 PHP 面向对象、模式与实践2)

深入 PHP 面向对象、模式与实践2)

spring发布于 2017-10-30 10:14查看:867回复:1

        4 使用对象

        4.1 组合模式

        组合模式,可以理解为单一对象管理组合对象(聚合组件),最终组合体下的各个组合部件最好类型一致.不然特殊性越多,需要判断就越多.

        假设捶背男,洗脚男,洗发男,用来服务一个人(妹子).

        假设妹子的几个部位可用的服务男均为无限个.

image.pngimage.png

        这是一个很理想的组合模式,在现实情况,我们使用组合模式,可能不得不创建多种类型的洗脚男,需要添加许多判断条件.

     4.2 装饰模式

        装饰模式,首先洗脚男,洗发男,捶背男都是人,但是如果,一个男的又捶背,又洗发,这怎么玩?.add_man两次?这不科学吧,来给这些男的装饰一下吧~

image.png


image.png


        装饰模式,既(组合+继承),基类方法一定要尽量少,不然子类可能有它不该有的方法.直接类继承,她只可能是一种形态,而她的多种形态可能一并拥有的时候,应该运用组合.

        继承即单一多态,组合既多种多态.

        这个例子中,你可以添加女,然后把装饰男类型改为装饰通用类型,但每个get_well()都要多一个判断是男还是女(如果给予的舒服程度不一样).

        这只是确保不可能出现在,之外的第三种人,如果基类为动物,给予服务的可能是鸡,鹅,鸭,那么装饰类型应该运用工厂模式,动物形态和装饰形态一一对应.方便拓展.

        除了服务类型,服务男的样子也很重要,这就多了一种装饰,现在有装饰男类型相貌男类型,这种情况怎么破,其实类似.

image.pngimage.png

        4.3 外观模式

        即给外部系统提供清晰接口

        例如当Model层写得很混乱,但是里面的方法还能用,那我们的Controller层应该列举一些清晰的访问方法来供View层访问.外观模式,强调的是清晰的访问接口.

        5 执行任务

        5.1 策略模式

        给类添加功能.对象要显式的调用它.

        继续刚才的洗脚男和人的故事吧…你丫的爽完了要给钱吧?支付宝?微信?现金?

        这个付款方式有多种,实现方法不应该放在类中,而是应该委托给别的类

image.png        

        5.2 观察者模式

        当被观察者发生变化,观察者需要被通知.

        当数据发生变化,页面需要被通知.

        使用步骤:

        观察者加载到被观察者中.

        被观察者通知观察者.

image.png

        例如登陆类(被观察)状态改变,要出发邮件系统和日志系统(观察者)

image.png

        PHP有内置的SPL实现上述的观察者模式.

     5.3 访问者模式

        问题: 在一个军队中,有很多军队,军队下面可能包含军队/步兵/弓箭手,这时我们要显示一个军队的战斗力/需要粮食的各级分配?(遍历对象并设置显示方法).怎么办?.解决办法是军队还是保存自己的基本信息,设置一个访问者,访问者包含总战斗力方法和总粮食的方法.

image.png

        访问者

image.png

        被访问者

image.png

        调用

image.png

        输出

image.png

     5.4 命令模式

        例子为Web页面的login和feed_back,假如都需要使用ajax提交,那么问题来了,将表单封装好提交上去,得到了返回结果.如何根据返回结果跳转不同的页面?.

        有些同学就说了,login和feed_back各自写一个方法憋,提交的时候调用各自的方法.

        然后再来个logout命令..增加..删除..命令怎么办..

        命令模式比较适合命令执行例如登陆,反馈等简单只需要判断是否成功的任务

image.png

        命令:

image.png

        部署命令的调用者

image.png

        客户端

image.png

        使用

image.png

收藏(0)0
查看评分情况

全部评分

此主贴暂时没有点赞评分

总计:0

回复分享

共有1条评论

  • IT宅男
  • mr jack
  • Mr ken
  • Mright
  • cappuccino
  • YUI
  • 课课家运营团队
  • 课课家技术团队1
  • 酸酸~甜甜
  • 选择版块:

  • 标题:

  • 内容

  • 验证码:

  • 标题:

  • 内容

  • 选择版块:

移动帖子x

移动到: