1
我正在學習GOF書中的設計模式。可以使用抽象工廠模式類型的協方差
有一件關於抽象工廠模式實現,讓我混在一起。我會用代碼開始:
抽象工廠:
public interface AnimalsFactory {
Animal getWaterAnimal();
Animal getLandAnimal();
Animal getFlyingAnimal();
}
混凝土廠:
public class SafariAnimalsFactory implements AnimalsFactory {
@Override
public Hippo getWaterAnimal() {
return new Hippo();
}
@Override
public Giraffe getLandAnimal() {
return new Giraffe();
}
@Override
public Vulture getFlyingAnimal() {
return new Vulture();
}
}
我用的類型的協方差這樣的工廠方法返回具體的產品,而不是抽象的產品(動物)。
我喜歡它,但是這不違反有關從客戶端封裝產品的經驗法則嗎?或者,也許我正在推翻這一點。
'獅子getFlyingAnimal()' - 因爲獅子可以飛 –
@SvetlinZarev不知何故,我錯過了xD ... – Tomasz