六大设计原则 -- 3.依赖倒转原则
发布时间:2020-12-14 01:49:43 所属栏目:百科 来源:网络整理
导读:依赖倒转原则(DIP:dependence inversion principle) 定义: 1.高层不能依赖底层模块,两者都依赖其抽象 2.抽象不能依赖细节,细节依赖抽象 依赖倒转简单的讲就是实现对接口的编程,而不是对实现的编程。可以降低客户与实现模块的耦合。 代码示例: 一个人读
依赖倒转原则(DIP:dependence inversion principle) 定义: 依赖倒转简单的讲就是实现对接口的编程,而不是对实现的编程。可以降低客户与实现模块的耦合。 代码示例: 一个人读书的代码: class Book{ public function getContent(){ return '我正在读书'; } } class Person{ //这里person依赖读书的具体实现 public funciton read(Book $book){ echo $book->getContent(); } } //客户端调用读书 $personObj = new Person(); $bookObj = new Book(); echo $personObj->read($bookObj); 设想这时需求变了,这个人要读报了,我们发现这个人不会读报,所以不得不修改person类: class Newspaper(){ public function getContent(){ return '我正在读报'; } } class Person{ //这里person依赖读书的具体实现 public funciton read(Newspaper $newspaper){ echo $newspaper->getContent(); } } $personObj = new Person(); //当需求改变时,客户端代码必须再次做出修改 $newspaperObj = new Newspaper(); echo $personObj->read($newspaperObj); 这时,我们修改person使其依赖一个抽象,而不是具体实现。 interface Ireader(){ public function getContent(); } //实现类对接口继承 //person依赖抽象接口 class Person{ public funciton read(Ireader $reader){ echo $reader->getContent(); } } //客户端实现 $personObj = new Person(); //当需求改变时,客户端代码必须再次做出修改 echo $personObj->read(new Newspaper()); echo $personObj->read(new Book());
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |