微信扫一扫打赏支持

php设计模式课程---9、桥接模式是什么

php设计模式课程---9、桥接模式是什么

一、总结

一句话总结:

一个类没干完,另外一个类接着给它干完
实质是类的拼接,也就是用类的组合代替了类的继承,因为类的组合可以有很多种方式,所以桥接就是类的组合

email类没做完的warn类接着做

sms类没做完的dang类接着做

52 echo $warn->send($email->send('lisi' , '考试了')) , "<br>";
53 echo $dang->send($sms->send('lisi' , '挂科了')) , "<br>";

 

1、桥接模式实例?

班上的同学按年龄分成了5个类,按照地区分成了8个类,如果继承来做就有5*8=40个类,但是如果桥接的话就只有5+8=13个类。就是年龄类没有做完的交给地区类来做

 

2、设计模式总纲?

a、变化的部分给它封装成类
b、如果类太多了就把相同的部分抽象出来,解析开,防止类过多

 

3、解决类爆炸(不同维度分类后组合在一起情况超级多)可以有哪些方法?

策略模式可以(写好的类组合,(sms,email,站内)一个类,(普通,警告,危险)一个类)
装饰器模式也可以

 

 

二、桥接模式是什么

1、代码

 1 <?php 
 2 class Msg {
 3     public function send($to , $cont) {
 4 
 5     }
 6 }
 7 
 8 
 9 class Zhan extends Msg {
10     public function send($to , $cont) {
11         return  $cont . '站内发给' . $to;
12     }
13 }
14 
15 class Email extends Msg {
16     public function send($to , $cont) {
17         return  $cont . 'Email发给' . $to;
18     }
19 }
20 
21 class Sms extends Msg {
22     public function send($to , $cont) {
23         return  $cont . '短信发给' . $to;
24     }
25 }
26 
27 
28 class Common  {
29     public function send($cont) {
30         return  '慢速:' . $cont;
31     }
32 
33 }
34 class Warning {
35     public function send($cont) {
36         return  '中速:' . $cont;
37     }
38 
39 }
40 
41 class Danger {
42     public function send($cont) {
43         return  '急速:' . $cont;
44     }
45 }
46 
47 
48 $email = new Email();
49 $sms = new SMS();
50 $warn = new Warning();
51 $dang = new Danger();
52 echo $warn->send($email->send('lisi' , '考试了')) , "<br>";
53 echo $dang->send($sms->send('lisi' , '挂科了')) , "<br>";
54 
55 
56 ?>

 

 

解决类爆炸(不同维度分类后组合在一起情况超级多)可以有哪些方法?

 

策略模式可以(写好的类组合,(sms,email,站内)一个类,(普通,警告,危险)一个类)
装饰器模式也可以

 

 
posted @ 2019-05-22 18:57  范仁义  阅读(267)  评论(0编辑  收藏  举报