android 源码设计模式解析与实战 读书笔记 1 面向对象的六大原则

来源:互联网 发布:阿里云是什么意思 编辑:程序博客网 时间:2024/06/03 17:46

六大原则包括单一职责原则,开闭原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特原则。

  • 单一职责原则:一个类中应该是一组相关性很高的函数,数据的封装。举例:将ImageLoader中抽取ImageCache分别管理。
  • 开闭原则:软件中的对象(类,模块,函数等)应该对于扩展是开放的,但是,对于修改是封闭的。而遵循开闭原则的重要手段应该是通过抽象。当软件需要变化时,应该尽量通过扩展的方式来实现变化,而不是通过修改已有的代码实现。举例:将ImageCache抽象化,提供对图片的获取和存储操作,在分别创建每一种缓存机制来分别实现它,来达到实现功能扩展。
  • 里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象。核心原理依旧是抽象。举例:任何继承View类的子类都可以设置给Window的show方法,Window将View显示到屏幕上。
  • 依赖倒置原则:关键点(1)高层模块不应该依赖底层模块,两者都应该依赖其抽象。(2)抽象不应该依赖细节(3)细节应该依赖抽象。其中,抽象指接口或抽象类,细节就是具体实现类,高层模块就是调用端,低层模块就是具体实现类。Java中的表现就是:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,即面向抽象编程。一句话概括:依赖抽象,而不依赖具体实现。举例:在ImageLoader中,依赖ImageCache抽象,而不依赖某一个具体实现缓存机制,并有一个默认的MemoryCache实现。
  • 接口隔离原则:客户端不应该依赖它不需要的接口,或是类间的依赖关系应该建立在最小的接口上。举例:利用FileOutputStream实现了Closeable接口,将FileOutputStream的关闭操作放入一个使用Closeable接口的关闭流的工具类中,这样方便了各种实现了Closeable接口的流的关闭操作。
  • 迪米特原则:一个对象应该对其他对象有最少的了解。即一个类应该对自己需要耦合或调用的类知道的最少。举例:租户类中不应该依赖房间类,而只需要知道中介类,所以将与找房间的业务放入中介类,让中介类帮我们找房子。要点:只与直接的朋友通信。
0 0
原创粉丝点击