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开放闭合原则:类应当对外扩展开放,对修改封闭
在理想系统中,我们通过扩展系统而非修改现有代码来添加新特性。
隔离修改
借助接口和抽象类(只呈现概念)来隔离具体类的实现细节(代码)—— 隔离外部依赖