设计模式六大原则之----依赖倒置原则
一、定义
友情提醒:xmind导出的图片有点模糊,请放大查看 二、 问题的由来2.1 问题
2.2 解决方案
三、 优点
四、 依赖倒置注入的实现
五、 注意
六、 使用场景
七、 案例
7.1 实现需求母亲类: public class Mother { private static final String TAG = "Mother"; public Book book; public Mother(Book book) { this.book = book; } public void tellStory(){ Log.e(TAG,"妈妈讲故事:"+book.getContent()); } } Book类: public class Book { public String getContent() { return "白雪公主和七个小矮人的故事"; } } 客户端调用: Book book = new Book(); Mother mother = new Mother(book); mother.tellStory(); 执行结果: 11-15 17:07:24.718 17891-17891/com.designpatterndisclipline E/Mother: 妈妈讲故事:白雪公主和七个小矮人的故事 7.2 增加需求
添加一个报纸类 public class NewsPaper { public String getContent() { return "今年的双十一又突破了几千亿了..."; } } 修改母亲类中的逻辑,让他能够读报纸 /** * Created by rytong on 2017/11/15. */ public class Mother { private static final String TAG = "Mother"; private Book book; private NewsPaper newsPaper; public void setBook(Book book) { this.book = book; } public void setNewsPaper(NewsPaper newsPaper) { this.newsPaper = newsPaper; } public void ReadBook(){ Log.e(TAG,"妈妈讲故事:"+book.getContent()); } public void ReadNewsPaper(){ Log.e(TAG,"妈妈读报纸:"+newsPaper.getContent()); } } 修改客户端调用逻辑: Mother mother = new Mother(); mother.setBook(new Book()); mother.setNewsPaper(new NewsPaper()); mother.ReadBook(); mother.ReadNewsPaper(); 执行结果: 11-15 17:16:00.568 23141-23141/? E/Mother: 妈妈讲故事:白雪公主和七个小矮人的故事 11-15 17:16:00.568 23141-23141/? E/Mother: 妈妈读报纸:今年的双十一又突破了几千亿了...
7.3 遵循依赖倒置原则重构让书、报纸等读物实现同一个接口 /** * Created by rytong on 2017/11/15. */ public interface IBook { public String getContent(); } 报纸和故事书都实现该接口 public class Book implements IBook{ public String getContent() { return "白雪公主和七个小矮人的故事"; } } public class NewsPaper implements IBook{ public String getContent() { return "今年的双十一又突破了几千亿了..."; } } 修改母亲类中的逻辑 public class Mother { private static final String TAG = "Mother"; private IBook iBook; public void setiBook(IBook iBook) { this.iBook = iBook; } public void read(){ if (iBook instanceof Book){ Log.e(TAG,"妈妈讲故事:"+iBook.getContent()); } if (iBook instanceof NewsPaper){ Log.e(TAG,"妈妈读报纸:"+iBook.getContent()); } } } 客户端调用: Mother mother = new Mother(); IBook iBook = new Book(); mother.setiBook(iBook); mother.read(); iBook = new NewsPaper(); mother.setiBook(iBook); mother.read(); 执行结果: 11-15 17:32:17.890 32436-32436/com.designpatterndisclipline E/Mother: 妈妈讲故事:白雪公主和七个小矮人的故事 11-15 17:32:17.891 32436-32436/com.designpatterndisclipline E/Mother: 妈妈读报纸:今年的双十一又突破了几千亿了...
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |