0.2-设计模式怎么样解决设计问题-针对接口编程,而不是针对实现编程

注1:
全文来自《设计模式——可复用面向对象软件的基础》的1.6节
该篇短小精悍,个 人感觉 是理解面向对象思想和设计模式的最佳内经心法
以下内容只是个人的读书笔记跪求各路神仙牛人指正理解上的偏差

另:
一个很重要的细节,《设计模式——可复用面向对象软件的基础》这本书1994年出版,而java是1995年诞生的



4

描述对象的实现(依赖关系)
Specifying Object Implement

对象通过 实例化类来创建,此对象被称为该类的实例
当实例化类时,要给对象的内部数据(由实例变量组成)分配存储空间,并将操作与这些数据联系起来

新的类可以由已存在的类通过 类继承(class inheritance)来定义
当子类(subclass)继承父类(parent class)时,子类包含了父类定义的所有数据和操作
子类的实例对象包含所有子类和父类定义的数据,且它们能完成子类和父类定义的所有操作

子类能 重定义(override)父类定义的操作
重定义使得子类能接管父类对请求的处理操作

抽象类(abstract class)的主要目的是为它的子类定义 公共接口
一个抽象类要把它的部分或全部操作的实现 延迟到子类中[Factory Method],一个抽象类不能被实例化
在抽象类中定义却没有实现的操作被称为 抽象操作(abstract operation)
非抽象类称为 具体类(concrete class)

混入类(mixin class)是给其他类提供可选择的接口或功能的类, 它与抽象类一样不能实例化
混入类要求多继承

一个对象的 类(class)定义了对象是怎样实现的,同时也定义了对象的内部状态和操作的实现
一个对象的 类型(type)只与它的接口有关,接口即对象能相应的请求的集合

一个对象可以有多个类型,不同类的对象可以有相同的类型
An object can have many types,and objects of different classes can have the same type

类继承,根据一个对象的实现定义了另一个对象的实现,它是代码和表示的 共享机制
接口继承(或子类型化)描述了一个对象什么时候能被用来 替代另一个对象

4.1

对接口编程,而不是对实现编程
Programming to an Interface,not an Implementation

继承所拥有的定义 具有相同接口的对象族的能力是很重要的(通常可以从抽象类来继承)
因为 多态依赖于这种能力

当继承被恰当使用时,所有从抽象类导出的类将共享该抽象类的接口。 这意味着子类仅仅添加或重定义操作,而没有隐藏父类的操作
这时,所有的子类都能响应抽象类接口中的请求,从而 子类的类型都是抽象类的子类型

只根据抽象类中定义的接口来操纵对象有以下两个好处:
1)客户无须知道他们使用对象的特定类型,只须对象有客户所期望的接口
2)客户无须知道他们使用的对象是用什么类来实现的,他们只需知道定义接口的抽象类
这将极大地减少子系统实现之间的相互依赖关系

通过抽象对象的创建过程, 创建型模式提供不同方式以在实例化时建立接口和实现的透明连接
创建型模式确保你的系统是采用针对接口的方式书写的,而不是针对实现而书写的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值