设计模式(1)

82 阅读2分钟

做 android 开发有段时间了,平时开发中不可避免用到设计模式,接下来花点时间再整理下设计模式笔记。如有不对的地方,欢迎大家多多指点~

第一章 设计模式七大原则

第1节 为什么要遵循设计模式规则

  1. 提升可重用性。即,相同功能的代码,不需要重复造轮子。
  2. 提升可读性。即,给你 CR 代码的大佬能一目了然。
  3. 提升可扩展性。即,其他开发同学可以很方便的增加新的功能。
  4. 提升可靠性。即,当我们增加新的功能后,对原来的功能没有影响,或者影响范围可控,避免引发未知问题。
  5. 使程序呈现高内聚,低耦合的特性。

第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 + " 在水里跑的....");
  }
}

// 分析:虽然没有在“类”级别上遵守单一职责原则,但是在“方法”级别上,是遵守单一职责