zoukankan      html  css  js  c++  java
  • php组合

    为了提高代码的复用性,降低代码的耦合(组合实现的两种方式)

    模式一:

     1 <?php
     2 //组合模式一
     3 class Person{
     4     public function eat(){
     5         echo "eat.<br/>";
     6     }
     7 }
     8 
     9 class Phone{
    10     public function call(){
    11         echo "phone call.<br/>";
    12     }
    13 }
    14 
    15 //学生也需要call()这个方法,为了提高代码的复用性(组合)
    16 class Student extends Person{
    17     private $people;
    18     public function learning(){
    19         echo "learn.<br/>";
    20     }
    21     public function func($class, $method){//兼容多个类的多个方法
    22         $this->people = new $class;
    23         $this->people->$method();
    24     }
    25 }
    26 
    27 $student = new Student();
    28 $student->eat();
    29 $student->func('Phone', 'call');
    30 $student->learning();

    模式二:

     1 <?php
     2 //组合模式二
     3 class Person{
     4     public function eat(){
     5         echo "eat.<br/>";
     6     }
     7 }
     8 
     9 trait Drive{
    10     public function call(){
    11         echo "phone call.<br/>";
    12     }
    13 }
    14 
    15 class Student extends Person{
    16     use Drive;
    17     public function learning(){
    18         echo "learn.<br/>";
    19     }
    20 }
    21 
    22 $student = new Student();
    23 $student->eat();
    24 
    25 //当方法或属性同名时,当前类中的方法会覆盖 trait的 方法,而 trait 的方法又覆盖了基类中的方法
    26 $student->call();
    27 $student->learning();
    View Code
  • 相关阅读:
    MongoDB的固定集合
    MongoDB的导入导出
    MongoDB的数据备份与恢复
    MongoDB的索引
    MongoDB简单CRUD场景
    MongoDB入门
    NOSQL概念入门
    Java静态代理和动态代理
    a=a+1背后的内存模型和CPU高速缓存
    SpringCloud的学习记录(6)
  • 原文地址:https://www.cnblogs.com/573583868wuy/p/5470083.html
Copyright © 2011-2022 走看看