面向对象:类组合还是类继承?

来源:互联网 发布:c语言函数库 编辑:程序博客网 时间:2024/06/06 08:44

 

类组类继承?有一表A,有多个画面用到。比如10个画面用到。由于每个画面功能不一,但A表的大多数字段所以字段都是共用的。种情况下,怎么写自己的INFO呢?大概有3种方案方案1:每个画面都写一个自己的INFO方案2:先写一个表A的INFO,然后每个画面的INFO里面加一个表A的INFO属性。也就是类组合。方案3:先写一个表A的INFO,然后每个画面的INFO承于表A的INFO。也就是类继承。 我稍微分析一下,方案1首先被淘汰掉,因量大,增加了工作量和维护成本。那方案2和方案3呢?都是面向象的思想,究竟哪种好呢?这还得了解一下类组合和类继承的缺点。类组合的点:   --容器类仅能通被包含象的接口来访问   --  “黑盒”复用,因被包含象的内部细节对外是不可   -- 封装性好。   -- 实现上的相互依性比小。被包含象与容器象之的依关系比   -- 每一个注于一   -- 通过获取指向其它的具有相同型的象引用,可以在运行期间动态地定象的)合。类组合的缺点:   -- 致系中的多。   -- 了能将多个不同的象作为组(composition block)来使用,必接口行定 类继承的优点:   --  容易行新的实现,因其大多数可承而来。   --  易于修改或展那些被复用的实现■类继承的缺点:   --  破坏了封装性,因为这会将父实现细节暴露   --  “白盒”复用,因的内部细节对于子而言通常是可的。   --  当父实现更改,子也不得不会随之更改。   --  从父类继承来的实现将不能在运行期间进行改 Coad规则仅当下列的所有标准被满足时,方可使用继承:   ▲子表达了“是一个…的特殊型”,而非“是一个由…所扮演的角色”。   ▲子的一个例永不需要化(transmute)其它的一个象。   ▲子其父职责(responsibility)展,而非重写或除(nullify)。   ▲子没有那些一个工具(utility class)的功能展。   于一个位于实际问题域(Problem Domain)的而言,其子特指一种角色(role),交易(transaction)或设备(device)。   合与承都是重要的重用方法,在面向象开的早期承被度使用。实际上究竟是用承是要根据实际情况来判断的,用合的好是用承的好多,或者两者集合起来用。  因此合上面的缺点,上面的那个例子用承好多,因为这个地方只是一个单纯的一表的操作。如果是设计表的,使用类组合更好一些,因为类组合封装性好,不容易出个地方就需要我具体问题具体分析了。
原创粉丝点击