10.1 类的组织

  1. class StandardJava {
  2. // 公共静态变量
  3. public static first: string;
  4. // 私有静态变量
  5. private static second: string;
  6. // 私有实体变量
  7. constructor(private third: number) {};
  8. // 很少会有公共实体变量
  9. // 公共函数
  10. public methodFourth() {
  11. this._methodFifth(1);
  12. this._useForTest();
  13. }
  14. // 私有工具函数
  15. private _methodFifth(idx: number): void {
  16. console.log(idx + '私有工具函数');
  17. }
  18. // 受保护的工具函数
  19. protected _useForTest(): string {
  20. return '测试调用我';
  21. }
  22. }
  23. var test = new StandardJava(1);
  24. console.log(test.methodFourth());

10.2 类应该短小

衡量方法:计算 权责

10.2.1 单一权责原则、

类只应有一个权责——一条修改的理由。(修改某个方面的变量)。

10.2.2 内聚

  • 类应该只有少量实体变量。
  • 极大化内聚类:类中的每个变量都被每个方法所使用。不可取。
  • 我们希望内聚性保持在较高位置。

    10.2.3 保持内聚性就会得到许多短小的类

    把大函数中小部分拆解成单独函数 => 拆解的代码使用了该函数中声明的4个变量 => 将这4个变量作为参数传递到新函数? => 将4个变量提升为类的实体变量 => 导致类丧失了内聚性,因为堆积了越来越多只为允许少量函数共享而存在的实体变量 => 让它们拥有自己的类
    将大函数拆为许多小函数,往往也是将类拆分为多个小类的时机

10.3 为了修改而组织

OCP开放闭合原则:类应当对外扩展开放,对修改封闭
在理想系统中,我们通过扩展系统而非修改现有代码来添加新特性。

隔离修改

借助接口和抽象类(只呈现概念)来隔离具体类的实现细节(代码)—— 隔离外部依赖