设计模式

封装

  • 什么是封装?

    • 用官方的话的说【封装就是划分一个抽象的诸多元素过程,这些元素构成该抽象的结构和行为,而封装的作用就是将抽象的契约接口与其实现分离】
  • 现在我们来理解下?

    • 首先封装是一种信息的隐藏

      • 什么是信息隐藏呢?

        • 举一个生活中的例子,像空调、汽车我们并不知道其原理与构造,但是类我们只需要知道一件事就够了,拿起遥控器和钥匙就用,没有啥花里胡哨的,我们并不需要知道细节是什么
    • 然后封装的过程中会出现一些问题,我们的好奇心是很丰富的总想去了解其中的构造,但是以封装的东西而言并不想你去碰他,那么这就会产生一种妥协,于是我们封装的东西就会多出来一些东西,也就是特性,是不是有种死皮赖脸的感觉(´Д`)y-~
    • 而对于编程而言,对象正是因为有了封装,对象才会成为一个对象
    • 现在,当其他人访问这个的时候,我们可以给他们,满足他们好奇心的东西,让他们的好奇心得到满足,让他们只能通过适当的访问渠道来使用这个模块,而不能使用这个模块的细节,其中适当的访问渠道也就是我们常说的private[私有]、protected[保护]、public[公有]
    • Private【私有】举例:

      <?php
          class informantion
          {
              private $age=24;
              private $sex;
          
              public function __construct()
              {
                  $this->age = 'boy';
                  $this->privacy();
              }
          
              private function privacy()
              {
                  echo $this->age;
              }
          }
      使用:
          $other=new information();
          //输出    24
  • 上述类中,实例化information(),__construct()将会初始化数据调用方法【__construct的使用请自行查阅官方文档】,在类只要使用$this【至于问啥用$this,别问我PHP规定的】,就可以访问$age的私有属性变量获得年龄,而以外部而言也就是$other,他只能看到privacy()输出的结果
  • 就好比,女孩子嘛,你一看就是女孩子,但是嘞女孩子的年龄是隐私不会告诉你的,你也就只能看到她想告诉你的,她是个女的
  • Protected【保护】举例:

        
        protected.php
        <?php
        abstract class YourWage
        {
            abstract protected function countMoney();
        
            protected $wage;
        
            protected function setHourly($hourly)
            {
                $money = $hourly;
                return $money;
            }
        }
        
    
        access.php
        <?php
    
        include_once('./protected.php');
        
        class access extends YourWage
        {
            protected $name="小明";
            function __construct()
            {
                $this->countMoney();
            }
        
            protected function countMoney()
            {
                $this->wage = "Your hourly wage is $";
                echo $this->wage . $this->setHourly(36);
            }
        }
        
        $worker = new access();
        输出:
            Your hourly wage is 36
    
  • 抽象类不能被实例化,且继承抽象类时需要实现其中的抽象方法
  • protected,只能在继承类和本类中使用
  • 上述话可能说的有点偏官方,其实嘞protected 就好像我们的工资是受保护的,其他人可能会在什么招聘信息什么公告上看到有多少钱,但是嘿嘿嘿看不到是谁又这么多钱,只有你的老板和你自己知道
  • public【公共】举例:

    <?php
    class information
    {
        public $wage = "10000";
        private $bank_password;
    
        private function property($data)
        {
            $this->bank_password = $data;
            if ($this->bank_password == "123456") {
                echo '哇!我太难了,没钱了!';
            }
        }
    
        public function attract()
        {
            echo $this->wage;
        }
    }
    
    $worker = new information();
    $worker->attract();
    
    输出:
        10000
  • 公共的顾名思义就是大家都可以用的,就好比你去相亲你会告诉别人你的工资多少,提升你的成功率避免见光死,虽然你的真实情况是我太难了!!!(;´д`)ゞ

爱护自己的鼠标手
3 声望0 粉丝

咸鱼,准备给自己浇点油翻个面