为了提高代码的复用性,降低代码的耦合(组合实现的两种方式)
模式一:
<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.