10.1 类的组织
class StandardJava {// 公共静态变量public static first: string;// 私有静态变量private static second: string;// 私有实体变量constructor(private third: number) {};// 很少会有公共实体变量// 公共函数public methodFourth() {this._methodFifth(1);this._useForTest();}// 私有工具函数private _methodFifth(idx: number): void {console.log(idx + '私有工具函数');}// 受保护的工具函数protected _useForTest(): string {return '测试调用我';}}var test = new StandardJava(1);console.log(test.methodFourth());
10.2 类应该短小
10.2.1 单一权责原则、
类只应有一个权责——一条修改的理由。(修改某个方面的变量)。
10.2.2 内聚
- 类应该只有少量实体变量。
- 极大化内聚类:类中的每个变量都被每个方法所使用。不可取。
- 我们希望内聚性保持在较高位置。
10.2.3 保持内聚性就会得到许多短小的类
把大函数中小部分拆解成单独函数=>拆解的代码使用了该函数中声明的4个变量=>将这4个变量作为参数传递到新函数?=>将4个变量提升为类的实体变量=>导致类丧失了内聚性,因为堆积了越来越多只为允许少量函数共享而存在的实体变量=>让它们拥有自己的类
将大函数拆为许多小函数,往往也是将类拆分为多个小类的时机
10.3 为了修改而组织
OCP开放闭合原则:类应当对外扩展开放,对修改封闭
在理想系统中,我们通过扩展系统而非修改现有代码来添加新特性。
隔离修改
借助接口和抽象类(只呈现概念)来隔离具体类的实现细节(代码)—— 隔离外部依赖
