码迷,mamicode.com
首页 > Web开发 > 详细

php组合

时间:2016-05-08 11:55:04      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

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

模式一:

 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

 

php组合

标签:

原文地址:http://www.cnblogs.com/573583868wuy/p/5470083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!