「高級別」組件是一個具有根據其他「低級別」組件定義的行爲的類。這個例子是Bulb類需要Socket類來實現它的LightOn()行爲。是不是所有的超類都是子類的高級組件?
並非所有的超類都是高級組件,並不是所有的子類都是低級組件。由於以下示例。
模板方法模式從頭第一個設計模式。
public abstract class CaffeineBeverage {
final void prepareRecipe() {
boilWater();
brew();
pourInCup();
addCondiments();
}
abstract void brew();
abstract void addCondiments();
void boilWater() {
System.out.println("Boiling water");
}
void pourInCup() {
System.out.println("Pouring int cup");
}
}
public class Coffee extends CaffeineBeverage {
public void brew() {
System.out.println("Dripping Coffee through filter");
}
public void addCondiments() {
System.out.println("Adding Sugar and Milk");
}
}
在這個例子中CaffeineBeverage
類有一個行爲prepareRecipe()
。此行爲需要brew()
和addCondiments()
的子類實現。 (超類)是高層組件,而Coffee
(子類)是低層組件。
public class superClass {
public go() {
//super class implementation
}
}
public class subClass extends superClass {
public go() {
//sub class implementation
}
}
在這種情況下superClass
didnt需要subclass
實施其go()
方法。
即使一個類有抽象方法需要子類來實現它DOESNT意味着超類是高層組件。見下面的例子。
public abstract class superClass {
public abstract go();
}
public class subClass extends superClass {
public go() {
//subclass implementation;
}
}
main() {
superClass s = new subClass();
s.go();
}
這裏s不是superClass對象... s這裏是subClass對象。
您可能會將構圖與繼承混爲一談。燈泡不是插座。 – 2012-04-21 23:43:06
呵呵???????????? – user1348869 2012-04-21 23:45:44
但燈泡仍然需要插座具有其lightON行爲,因此燈泡爲高級組件和插座爲底層組件。那麼你的意思是這個「高級組件事物」只適用於繼承?對不起,我的英文順便說一句。 – user1348869 2012-04-21 23:50:37