zoukankan      html  css  js  c++  java
  • php 装饰者模式

    装饰者模式

    现在出现这样一个场景:公司招聘人才,现在有很多继承person类的子类,如salePerson,ItPerson,sale+Itperson类等等;现在公司准备对能力不一样的人才提高工资收入。程序员恼火了,这种累有很多,我们需要一个个去修改代码,这是勤快人做的事,对于懒人还是多想想怎么解决这个鬼东西?于是装饰者模式百年诞生了,看代码如何实现这样的方式:

    abstract class person{
        public $_name;
        abstract function money();
    }
    //被装饰者
    class salePerson extends person{
        function __construct()
        {
            $this->_name = 'saler';
        }
        public function money()
        {
            return 100;
        }
    }
    //装饰者
    class ItPerson extends person{
        public $_person;
        function __construct(Person $person)
        {
            $this->_name = 'It';
            $this->_person = $person;
        }
        public function money()
        {
            return $this->_person->money() + 100;
        }
    }
    $salePerson = new salePerson();
    
    $saleItPerson = new ItPerson($salePerson);
    
    print $saleItPerson->money();

    装饰者和被装饰者必须是一样的类型,目的就是装饰者取代被装饰者。

    类的原则就是对扩展开发,对修改关闭。虽然装饰者模式好用,但不能项目中都用装饰者模式,这是一种浪费,造成太小类太多,装饰者模式适合裱花比较多的项目当中,如餐饮等,具体在哪里使用还是靠自己经验的积累,毕竟一个项目并非只用一个模式实现,往往是多重模式相结合实现的。

  • 相关阅读:
    02作业
    作业01
    10-C++远征之模板篇-学习笔记
    9-C++远征之多态篇-学习笔记
    8-C++远征之继承篇-学习笔记
    C++远征之封装篇(下)-学习笔记
    6-C++远征之封装篇[上]-学习笔记
    C++远征离港篇-学习笔记
    4-c++教程起航篇-学习笔记
    Linux C语言结构体-学习笔记
  • 原文地址:https://www.cnblogs.com/happy-dream/p/6611351.html
Copyright © 2011-2022 走看看