设计模式 - fanglinliu/fanglinliu.github.io GitHub Wiki

函数是最基本,最小单元的抽象和封装

抽象出通用的接口, 抽象 -》 通用接口

封装具体的细节变化 封装 -》 细节变化

拿函数举例来说,函数的声明就是抽象出来的通用接口,这个是不变的,通用的,具体细节共性的本质。 而函数体内部的代码就是具体细节,这个内部的代码是易变得。我们用一个函数的形式来把这部分易变的细节代码封装起来,抽象出一个函数声明。 函数声明抽象的本质是由函数的参数和返回值来决定。所以函数指针是比函数更本质的东西。善于把易于变化的代码里找到不变的参数和返回值,抽象封装出一个函数。

抽象出通用的接口和封装具体的细节变化是把代码用函数的形式封装起来这个一个事情的两种角度。

java的接口和抽象类里面的抽象方法都是在C函数抽象和封装的基础上发展而来。确切来说是多个C函数指针的集合。C函数指针是对C函数的抽象和封装。

紧耦合? 松耦合? 依赖具体类型就是紧耦合, 依赖抽象类型就是松耦合

继承于抽象借口和继承于具体类是有很大区别的

所有的类的的属性都应该依赖于抽象的类型,而不是具体类型。创建对象时在构造器中传入具体类型,或者具体类型的具体factory。

稳定的,不变的,就是抽象的。抽象的就是共同的。 其他的东西都在变,稳定的不变。拉开时间轴,时间轴上各个时间点变化的部分和一直稳定的部分,使得稳定的部分成为不停变化的各个部分的共性——基类。

Command 模式 ==== 函数指针 ==== closure 依赖倒置原则,依赖接口,这个接口就是就是函数函数指针