设计模式

为了提高代码的复用性,减弱代码的耦合(组合完结的二种方法)

那是一篇翻译,
加泰罗尼亚语原稿在此:https://news.ycombinator.com/item?id=13664127

模式一:

在二个非常远相当远的星系里,有三个王国。这里的群众不精晓结构化编制程序。他们的编制程序语言中唯有分支和跳转(俗称GOTO)。

 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();

那边流传着一本圣经:《GOTO设计形式》

模式二:

上面是那本书上的多少个例证:

图片 1图片 2

IF
模式
:借让你只想在某种意况下才施行一段代码,你就写多个有标准的GOTO到这段代码的后面。

 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();

IF-ELSE
模式
:倘使你想在某种景况为确实况况下实行一段代码,为假的时候试行另一段代码,使用此格局。那个形式和IF情势很像,差异的是,要在这段真代码前边,加一个义务医疗跳转,超越假代码。

网站地图xml地图