[设计] 多用合成,少用继承

楼主: internaltide (internaltide)   2014-03-15 18:50:05
看了一些设计模式跟物件导向的书,都会提到一个观念就是
多用合成,少用继承
之后,自己在写程式时有尝试着多使用合成去取代继承
但是发现被合成物件(物件C、D)要取得合成物件(物件A)的资料时都会很不方便
EX.
// 物件A
class objectA{
public static shareResources;
public attr1;
public attr2;
public objectC; //合成的物件C
public objectD;
public function func1(){...}
public function func2(){...}
}
// 继承物件A的物件B
class objectB extend objectA{
~~~~~~~~~~~~
~~~~~~~~~~~~
}
可能同样的物件内容B跟C,但实际上当要取得物件A的资料时
物件B可以很直觉的直接使用物件A的属性或间接使用方法来取得资料。
但物件C就很麻烦了,变成我可能必须在A Class的建构式中时就要把资料
想办法塞到C物件,搞到后来变成当D物件也需要相同资料时,我又得重复
塞相同的资料到物件D。 晕!!
后来,我都是直接在物件A设了一个名为shareResources的阵列并宣告为Static,
再把所有共用资源都往那个阵列塞。
然后,无论合成物件或继承物件都可以直接取用物件A的资料了。
不晓得做法好不好,有没有大师提供更聪明的方法??

Links booklink

Contact Us: admin [ a t ] ucptt.com