Android设计模式学习笔记第一章-----面向对象的6大原则

一、单一职责原则

说明:每一个类中的属性及方法都具有与这个类强相关的特点。如需要构建一个图像缓存的功能,根据UML图完成设计,则需要构建一个图像缓存的类ImageCache,和一个图像载入的类ImageLoad。如果把这两个类的功能共同放到图像缓存类ImageCache中,则会出现缓存和载入代码在一个类中的情况,这样如果后期只需要载入功能或只需要缓存功能,就不得不新建别的类。或后期添加新的函数操作,同样需要改变ImageCache类的结构,不方便代码维护。

优势:拆分类,使得每个类的属性及方法都只对应同一种功能,方便后续更新及维护。

 

二、开闭原则

说明:软件中的对象应对于扩展是开放的,对于修改是封闭的。如上面的ImageCache类,当需要添加缓存方式时,可通过继承的方式实现功能的扩展,而不是直接去修改ImageCache代码本身。如果直接修改代码实现更新,会造成ImageCache类随着功能的增加越来越庞大而难以维护,同时还会引入BUG。

优势:通过接口及抽象类的形式使得对象实现得以抽象出来。以后的更新基于继承接口或抽象类实现,而不去修改实现类本身的代码。

 

三、里氏替换原则

说明:所有引用基类的地方必须能透明地使用其子类的对象。其核心原理是抽象。当一个方法不能被替换时,可以建立这个方法的抽象,通过在子类中重写这个方法实现方法功能的替换。

优势:在子类中透明地使用父类的方法,保证系统的扩展性及灵活性。

 

四、依赖倒置原则

说明: 模块间的依赖通过抽象发送,实现类之间不发生直接依赖关系,其依赖关系是通过接口或抽象产生的。总结概括就是面向接口编程。

优势:重写接口,将功能拆分为不同模块,且不同模块间不产生直接依赖关系,便于实现类的代码维护及扩展。具体实现可通过依赖注入的方式,选择适合的实现类对象。

 

五、接口隔离原则

说明:客户端不应依赖他不需要的接口。这里的接口指的是各个类间的连接接口,而不是接口类。如在多个个类中实例化了一个工具类的对象,则多个类中的对象实例只依赖于这个工具类对象的抽象而不是具体实现。

优势:解耦了系统,从而容易重构和更改。

 

六、迪米特原则

说明:一个类应该对自己需要耦合或调用的类知道的最少,类的内部如何实现与调用者或依赖者没关系,调用者只需要知道它需要的方法就可以。简而言之,就是找准谁才是这个类需要用到的对象,把没用的对象通过封装方法或属性由其必须有依赖关系的类中实现。

优势:解耦了系统,从而容易重构和更改

你可能感兴趣的:(Android设计模式)