Heim >php教程 >php手册 >php组合,php排列组合算法

php组合,php排列组合算法

WBOY
WBOYOriginal
2016-06-13 08:40:441033Durchsuche

php组合,php排列组合算法

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

模式一:

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

模式二:

1 php 2 //组合模式二 3 class Person{ 4 public function eat(){ 5 echo "eat.
"; 6 } 7 } 8 9 trait Drive{ 10 public function call(){ 11 echo "phone call.
"; 12 } 13 } 14 15 class Student extends Person{ 16 use Drive; 17 public function learning(){ 18 echo "learn.
"; 19 } 20 } 21 22 $student = new Student(); 23 $student->eat(); 24 25 //当方法或属性同名时,当前类中的方法会覆盖 trait的 方法,而 trait 的方法又覆盖了基类中的方法 26 $student->call(); 27 $student->learning(); View Code

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn