接口,再设计上跟类型是同样的东西,就是类型。在设计上并不纠结什么.net 编程术语,而是各种OO语言都公认的基本术语。
所以“写接口、写父类、写抽象类”,以及一大堆其它说法(比如说.net根本不支持的多重继承技术),都是一样的东西——可以用来降低耦合、保证高内聚地封装。
比如说你开发一个通用的 ATM 程序,面对5种大类、25种小类,假设有500种不同的银行卡处理流程,你要写500个程序吗?不是的。你首先写了一个ATM 流程父类,然后5种大类的差别在子类中重写,然后25种小类与其大类的差别又分别在小类中进行重写,然后每一种银行卡的一点点差别又分别在每一个银行卡类中进行重写。
假设有1000个人跟这500种银行卡发生关系,是要考虑 50万种情况吗?不是的。因为ATM 只有一种——所有的银行卡都是它的子类,因此具体的银行卡流程是通过父类给外界打交道的。
分层扩展,继承和多态,就是保证高内聚低耦合的一种设计手段。
所以“写接口、写父类、写抽象类”,以及一大堆其它说法(比如说.net根本不支持的多重继承技术),都是一样的东西——可以用来降低耦合、保证高内聚地封装。
比如说你开发一个通用的 ATM 程序,面对5种大类、25种小类,假设有500种不同的银行卡处理流程,你要写500个程序吗?不是的。你首先写了一个ATM 流程父类,然后5种大类的差别在子类中重写,然后25种小类与其大类的差别又分别在小类中进行重写,然后每一种银行卡的一点点差别又分别在每一个银行卡类中进行重写。
假设有1000个人跟这500种银行卡发生关系,是要考虑 50万种情况吗?不是的。因为ATM 只有一种——所有的银行卡都是它的子类,因此具体的银行卡流程是通过父类给外界打交道的。
分层扩展,继承和多态,就是保证高内聚低耦合的一种设计手段。