单一职责原则
依赖颠倒原则
开放封闭原则
里氏代换原则
迪米特法则 ( LoD ) 又叫作最少知识原则,便是说一个工具应该对其它的工具尽可能少的理解,不要和“陌生人”说话,根本思想是强调了类之间的松耦合。
从被依赖工具的角度来看, 被依赖的工具只暴露须要暴露的属性与方法, 只管即便不要通盘托出, 毫无隐私, 全都 public。
而从依赖工具来看,只依赖该当依赖的工具,什么叫该当依赖,便是你有赡养父母的责任,别让你的父母依赖那些没有赡养你父母责任的陌生人,陌生人“不一定”会管 ......
// 系统接口namespace Mode\LoF;interface ISystem { public function close();}// 关闭电脑namespace Mode\LoF;class System implements ISystem { public function __construct() { echo '正在关机...<br>'; } private function saveCurrentTask() { echo '正在保存当前任务...<br>'; } private function closeServices() { echo '正在关闭各项做事...<br>'; } private function closeScreen() { echo '正在关闭屏幕...<br>'; } private function closePower() { echo '已关机<br>'; } public function close() { $this->saveCurrentTask(); $this->closeServices(); $this->closeScreen(); $this->closePower(); }}// 指令接口namespace Mode\LoF;interface ICommand { public function send();}// 详细指令namespace Mode\LoF;class Command implements ICommand { public $computer; public function __construct() { $this->computer = new System(); } public function send() { $this->computer->close(); }}// 人namespace Mode\LoF;class Person { private $command; public function __construct() { $this->command = new Command(); } public function closeComputer() { $this->command->send(); }}// 调用require '../autoload.php';use Mode\LoF\Person;$person = new Person();$person->closeComputer();
上述示例中,System 类只暴露了 close 方法,其它皆为 private,符合迪米特法则的第一要义,暴露只该暴露的部分。
用户发送指令,详细实行交给详细的指令子类去完成,无需关联用户与详细是如何关闭系统的,符合迪米特法则的第二要义。
只依赖该依赖的,该例子也符合 "依赖颠倒原则",面向接口编程 ......