兩種基本方法是。當你建立兩個類之間的繼承關係inheritance
和composition
,你要採取的dynamic binding
和polymorphism
優勢。
鑑於inheritance
關係使得難以改變超類的interface
,所以值得關注composition
提供的替代方法。事實證明,當您的目標是代碼重用時,composition
提供了一種可生成易於更改的代碼的方法。
class Fruit {
// Return int number of pieces of peel that
// resulted from the peeling activity.
public int peel() {
System.out.println("Peeling is appealing.");
return 1;
}
}
class Apple extends Fruit {
}
class Example1 {
public static void main(String[] args) {
Apple apple = new Apple();
int pieces = apple.peel();
}
}
如果在未來的某個時刻,但是,你想改變剝離的返回值()輸入Peel
,你會打破例1碼的代碼,即使例1直接使用蘋果從未明確提到水果。
Composition
爲Apple重新使用Fruit的peel()
實現提供了另一種方法。相反,延長水果,蘋果可以裝到Fruit
實例的引用和定義自己的peel()
方法只需在水果調用peel()
。下面的代碼:
class Fruit {
// Return int number of pieces of peel that
// resulted from the peeling activity.
public int peel() {
System.out.println("Peeling is appealing.");
return 1;
}
}
class Apple {
private Fruit fruit = new Fruit();
public int peel() {
return fruit.peel();
}
}
class Example2 {
public static void main(String[] args) {
Apple apple = new Apple();
int pieces = apple.peel();
}
}
Inheritance
給你比Composition
更高的耦合。
什麼是「良好的整體耦合」?一般來說,幾乎任何類型的耦合都是不可取的。 – 2012-07-10 08:40:46
你爲什麼不舉一些例子? – Nick 2012-07-10 08:46:16
用示例編輯 – mezamorphic 2012-07-10 09:14:46