[Objectoriented] : 重用

前言 :

说到「面向对象程序设计」跟「结构化导向程序设计」两者之间的不同。常常会提到一点 :「面向对象程序设计程序代码比较容易重用」。
面向对象程序设计的前辈工程师,总结了很多经验写下了Design Patterns以及其他很多的数据文献。
让后续的工程师在重用程序代码的时候,有一些模式可以使用,而不用再去自己创造。
这大大增加了面向对象重用的机会,这类文章网络上已经有很多,这边就不赘述。
本篇从广义的抽象概念,来阐述面向对象的重用概念。

说明 :

「结构化导向程序设计」在重用的这个领域上,主要是使用「Library」来当作重用的方式。
「面向对象程序设计」在重用的这个领域上,除了沿用结构化导向程序设计的「Library」观念之外,还延伸了独属于面向对象的重用方式「Framework」。

「Library」: 将特定的功能封装成一组程序代码。后续重用的时候,呼叫程序代码提供的接口就可以使用特定功能。
「Framework」: 将特定功能封装成一组程序代码,并且定义部分程序代码可抽换。后续重用的时候,实做可抽换的程序代码就可以使用特定功能。
Library是一种重用底层的概念,而Framework则是一种重用核心的概念。
下面的章节采用一个简单的范例来说明这两种概念。

范例 :

下图是一个简单的使用面向对象设计出来的机器人开车程序。
「车」有很多种,有可能是真的汽车,也有可能是遥控车。
「机器人」会依照程序将「车」开到想去的地方。

image

「Library」式的重用
将范例里的各种车辆,整合起来变成一堆车子的组件。下次有别的地方要使用,只要呼叫这个组件内的车子,就可以使用车子的功能。
一般我们使用的 .NET Framework Class Library里面的对象,大多是属于「Library」式的重用。

「Framework」式的重用
将范例里的机器人程序整合,变成一个机器人的组件。下次有别的地方要使用,只要实做机器人可以操作的不同车辆,就可以使用机器人功能。
一般我们使用的 ASP.NET Framework,就是属于「Framework」式的重用。
*ASP.NET封装了的HTTP通讯等等的工作,并且开放定义好的接口(例如 : Page对象)让工程师改写。

后记 :

本篇文章讲述的概念没有很特别,平常在撰写面向对象程序设计的时候,就会不自觉的用到。
但这些是功夫的基础,有意识的修炼跟无意识的使用还是有差别的,希望能对大家有帮助。

原文地址:https://www.cnblogs.com/clark159/p/2205055.html