面向对象的六大原则

设计模式分类

创建型模式

工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式

适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式

策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其他分类

并发型模式和线程池模式。

设计模式六大原则

单一指责原则(SRP)

定义:一个类,应该仅有一个引起它变化的原因。一个类应该是一组相关性很高的函数,数据的封装。
单一指责的划分界限并不总是那么清晰,很多时候都是要考个人经验来界定

实例:ImageLoader负责图片加载,ImageCache负责图片缓存的逻辑

开闭原则(OCP)

定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,对于修改是封闭的。实现开闭原则等重要手段是抽象和接口

在软件的生命周期中,因为变化,升级和维护等原因对软件原有代码进行修改是,可能会将错误引入原本已经进过测试的就代码中

实例:ImageLoader的缓存太单一,比如下载图片,应用重启后会消失,需要重新下载。
这时候就需要定义一个接口ImageCache,底下实现MemoryCache,DiskCache,DoubleCache等。通过setImageCache()方法将ImageCache注入到ImageLoader中

里氏替换原则(LSP)

定义:所有引用基类的地方必须能透明的使用其子类对象。LSP依赖于继承,多态这两大特性。
只要父类能出现的地方,自乐就可以出现,而且替换后不会产生任何错误和异常,反之则未必。
总结两个字:抽象,依赖于继承。
实例:Android 源码中的View和其子类,ImageCache和其 实现类。

依赖倒置原则(DIP)

关键点:
高层模块不应该依赖低层模块,两者都应该依赖其抽象。
抽象(抽象类或接口)不应该依赖细节。
细节(实现类)应该依赖抽象。

表现:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。

实例:注入ImageCache,而非ImageCache的子类

接口隔离原则(ISP)

定义:客户端不应该依赖它不需要的接口。(类间的依赖关系应该建立在最小的接口上)

实例:Closeable接口的关闭,只需要关闭功能。
ImageCache接口只需要有put和get功能。

迪米特原则(LOD)

也称为最小知识原则,
定义:一个对象应该对其他对象有最少的了解(只与直接的朋友通信)。
实例:中介找房子,只需要和中介打交道即可。
SD卡缓存,只需要和ImageCache打交道,而不需要直到DiskLruCache的存在

你可能感兴趣的:(设计模式,面向对象)