0
我有一個創建一些實體的實體工廠。 我也有一個Person實體,用裝飾設計模式創建更具體的人物。 膠模式,堅持兩種不同的設計模式
在我的工廠類,我有
public class EntityFactory {
private final EntityType entityType;
public enum EntityType{
ENTITY1,
ENTITY2,
PERSON1,
CHILD
}; //I want the user to select only one of those
public EntityFactory(EntityType entityType){
this.entityType = entityType;
}
public EntityType getEntity(){
return entityType;
}
public Entity createEntity(){
switch(entityType){
case ENTITY1: return new Entity1();
case PERSON1: return new Person1(new Person()); //problem
case CHILD: return new Child(new Person()) //problem
//...
default: return null;
}
}
}
兩個ENTITY1和ENTITY2擴展實體,做工精細。當我嘗試創建PERSON1時,告訴我PERSON1不能轉換爲實體。這是可以理解的,因爲IPerson
不存在於Entity內部。我的問題是我如何讓EntityFactory爲我創建一個特定的人?這兩者之間可能有什麼?我現在正在研究介體和適配器模式。感謝您的幫助。
我已經嘗試過了,問題remains.It不能轉換的學生:Entity.The我之所以用裝飾是因爲首先我學習設計模式,我想更多地瞭解他們 - 當然 - !其次我要dynamicaly在運行但不能創建這些實體的所有them.The用戶必須PERSON1和孩子之間選擇要created.You看,他們有一些共同的方法和我的邏輯告訴我,這是更apropriate _child ISA PERSON2,PERSON1和Person2 ISA Person和Person ISA Entity_.I試圖讓Person成爲一個實體,並沒有採取我想要的結果。 –
在你輸入「case person 1」的行中,你返回一個Person,但你的方法說「public Entity createEntity()」。您只能返回實體的實體或子類。 – Styl
這正是我想要解決的問題!我想讓Person及其所有子類成爲實現IPerson的實體。雖然我把它變成一個實體,但Person1不能轉換。 –