设计模式六大原则:
单一职责原则
:就一个类仅有一个引起它变化的原因,即类承担的职责单一性;
开放封闭原则
:类、模块、函数等应该是可以扩展的,但是不可修改。换句话说,就是面对需求的改变要尽可能地保证相对稳定,尽量通过扩展的方式而不是修改原有的代码来实现。
里氏替换原则
:所有引用基类(父类)的地方必须透明地使用其子类对象。换句话说,就是尽量把父类设计为抽象类或者接口,在运行时子类实例替换父类实例,在扩展时通过增加一个新的子类实现;
依赖倒置原则
:高层模块不应该依赖低层模块,两者都应该依赖于抽象。换句话说,就是模块间的依赖通过抽象发生,实现类之间不发生直接依赖关系,其依赖关系是通过接口或者抽象类产生。
迪米特原则
:一个软件实体应当尽可能少地与其他实体发生相互作用。换句话说,就是通过引入一个合理的第三者来降低现有对象之间的耦合度,同时在设计类时尽量降低成员的访问权限。
接口隔离原则
:一个类对另一个类的依赖应该建立在最小接口上。换句话说,就是为各个类建立专用的接口,而不要试图建立一个庞大的接口供所有依赖它的类调用,同时接口中的方法尽量少且少用public修饰,以提高内聚和减少对外交互。
1. 简单工厂模式
2.1 定义
简单工厂模式又被称为静态工厂方法模式,它是创建型设计模式的一种,但不属于23种GoF设计模式之一。学习简单工厂模式有助于理解接下来要学习的工厂方法模式,它的定义为:由一个工厂对象决定创建出哪一种产品类的实例
。简单工厂模式UML类图如下:
UML类图角色说明:
Factory
:工厂类,它负责创建各类产品对象,依赖于Product;IProduct
:抽象产品类,它负责描述所有具体产品类所共有的方法;Product
:具体产品类,它是Factory创建的目标,继承于IProduct。
2.2 代码实现
在Android开发中,偶尔也会用到简单工厂模式来根据不同的情况创建对应的产品对象实现特定的业务,这种模式就是实现比较简单,避免了直接实例化类(即产品类
),从而降低了耦合性。接下来,我们就以工厂生产口罩为例来学习简单工厂模式的实现。由于最近一段时间新型冠状病毒的影响,人们出行不得不佩戴口罩,而并不是所有类型的口罩都能够过滤病毒,通常只有医用外科口罩
及N95型口罩
可预防感染,现在我们的工厂就需要大量的生产这两种类型的口罩。具体代码如下:
(1)抽象产品类,IProduct
/** 抽象产品类
* author : jiangdg
* date : 2020/1/30 20:00
* desc : 负责描述所有具体产品类所共有的方法
* version: 1.0
*/
public abstract class Mask {
// 产品的抽象方法,由具体的产品实现
public abstract void efficacy();
}
(2)具体产品类,Product
- 医用外科口罩
/** 具体产品
* author : jiangdg
* date : 2020/1/30 20:00
* desc : 医用外科口罩
* version: 1.0
*/
public class SurgicalMask