做 android 开发有段时间了,平时开发中不可避免用到设计模式,接下来花点时间再整理下设计模式笔记。如有不对的地方,欢迎大家多多指点~
第一章 设计模式七大原则
第1节 为什么要遵循设计模式规则
- 提升可重用性。即,相同功能的代码,不需要重复造轮子。
- 提升可读性。即,给你 CR 代码的大佬能一目了然。
- 提升可扩展性。即,其他开发同学可以很方便的增加新的功能。
- 提升可靠性。即,当我们增加新的功能后,对原来的功能没有影响,或者影响范围可控,避免引发未知问题。
- 使程序呈现高内聚,低耦合的特性。
第2节 单一职责原则
1.描述
- 降低类的复杂度
- 提高类的可读性、可维护性
- 降低变更带来的风险
即,一个类应该只负责一项职责,如类 A 负责两个不同的职责:职责1、职责2。当职责1需求变更而改变 A 时,可能造成职责2执行错误,所以需要将类 A 的颗粒度分解为 A1、和 A2
2.例子
public class Client1 {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.run("摩托车");
vehicle.run("汽车");
vehicle.run("飞机");
}
}
// 交通工具
class Vehicle {
public void run(String vehicle) {
System.out.println(vehicle + "在路上运行");
}
}
// 问题:Vehicle # run()方法 既负责陆地上的,又负责水里的,不合理 → 违反单一职责原则
// 改进:根据交通工具运行方式不同,分解成不同类即可
public class Client2 {
public static void main(String[] args) {
Vehicle2 vehicle2 = new Vehicle2();
vehicle2.run("汽车");
vehicle2.runWater("轮船");
vehicle2.runAir("飞机");
}
}
class Vehicle2 {
public void run(String vehicle) {
System.out.println(vehicle + " 在公路上运行....");
}
public void runAir(String vehicle) {
System.out.println(vehicle + " 在天上飞的....");
}
public void runWater(String vehicle) {
System.out.println(vehicle + " 在水里跑的....");
}
}
// 分析:虽然没有在“类”级别上遵守单一职责原则,但是在“方法”级别上,是遵守单一职责