先來看一下圖
分別來看一下相應的**,抽象工廠類:
package com.fanyafeng.abstractfactory.abfactory;
import com.fanyafeng.abstractfactory.mobilephonefactory.mobilephone;
import com.fanyafeng.abstractfactory.v***ctory.vr;
/** * created by fanyafeng on 16/7/1.
*/public abstract class abstractfactory
抽象工廠建造者
package com.fanyafeng.abstractfactory.abfactory;
import com.fanyafeng.abstractfactory.mobilephonefactory.mobilephonefactory;
import com.fanyafeng.abstractfactory.v***ctory.v***ctory;
/** * created by fanyafeng on 16/7/1.
*/public class factoryproducter }}
再分別看mobiel和vr的介面宣告
package com.fanyafeng.abstractfactory.mobilephonefactory;
/** * created by fanyafeng on 16/7/1.
*/public inte***ce mobilephone
package com.fanyafeng.abstractfactory.v***ctory;
/** * created by fanyafeng on 16/7/1.
*/public inte***ce vr
這兩個的工廠
package com.fanyafeng.abstractfactory.mobilephonefactory;
import com.fanyafeng.abstractfactory.abfactory.abstractfactory;
import com.fanyafeng.abstractfactory.mobilephone.htc;
import com.fanyafeng.abstractfactory.mobilephone.iphone;
import com.fanyafeng.abstractfactory.mobilephone.mi;
import com.fanyafeng.abstractfactory.v***ctory.vr;
/** * created by fanyafeng on 16/7/1.
*/public class mobilephonefactory extends abstractfactory
}@override
public vr getvr(string vr)
}
package com.fanyafeng.abstractfactory.v***ctory;
import com.fanyafeng.abstractfactory.abfactory.abstractfactory;
import com.fanyafeng.abstractfactory.mobilephonefactory.mobilephone;
import com.fanyafeng.abstractfactory.vr.dapeng;
import com.fanyafeng.abstractfactory.vr.headset;
/** * created by fanyafeng on 16/7/1.
*/public class v***ctory extends abstractfactory
@override
public vr getvr(string vr) }}
剩下的是具體的建造物件
package com.fanyafeng.abstractfactory.mobilephone;
import com.fanyafeng.abstractfactory.mobilephonefactory.mobilephone;
/** * created by fanyafeng on 16/7/1.
*/public class htc implements mobilephone
}
package com.fanyafeng.abstractfactory.mobilephone;
import com.fanyafeng.abstractfactory.mobilephonefactory.mobilephone;
/** * created by fanyafeng on 16/7/1.
*/public class iphone implements mobilephone
}
package com.fanyafeng.abstractfactory.mobilephone;
import com.fanyafeng.abstractfactory.mobilephonefactory.mobilephone;
/** * created by fanyafeng on 16/7/1.
*/public class mi implements mobilephone
}
package com.fanyafeng.abstractfactory.vr;
import com.fanyafeng.abstractfactory.v***ctory.vr;
/** * created by fanyafeng on 16/7/1.
*/public class dapeng implements vr
}
package com.fanyafeng.abstractfactory.vr;
import com.fanyafeng.abstractfactory.v***ctory.vr;
/** * created by fanyafeng on 16/7/1.
*/public class headset implements vr
}
main的測試
package com.fanyafeng.abstractfactory;
import com.fanyafeng.abstractfactory.abfactory.abstractfactory;
import com.fanyafeng.abstractfactory.abfactory.factoryproducter;
import com.fanyafeng.abstractfactory.mobilephonefactory.mobilephone;
import com.fanyafeng.abstractfactory.v***ctory.vr;
import com.fanyafeng.abstractfactory.v***ctory.v***ctory;
/** * created by fanyafeng on 16/7/1.
*/public class main
}
總體來說感覺這個模式好抽象,沒有找到挺好的描述語言,大家也可以根據模式的六原則進行對應 工廠模式三 抽象工廠模式
抽象工廠模式可以用來生產不同產品族的全部產品。對於新增加的產品,無能為力 但是支援增加產品族 抽象工廠模式其實是工廠方法模式的公升級版本,在有多個業務品種和分類時,通過抽象工廠模式產生需要的物件是一種非常好的解決方案。首先建立發動機引擎的介面與不同層次引擎的實現類 public inte ce en...
三)工廠模式 抽象工廠模式
1 工廠模式介紹建立型設計模式,結構簡單的模式,建立物件的介面,讓子類決定例項化哪個類 2 工廠模式使用場景 在任何需要生成複雜物件的地方,都可以使用,用new就可以生成就無需使用 3 工廠模式的組成 分為四大模組,一是抽象工廠,為工廠方法模式的核心,二是具體工廠,實現具體的業務邏輯,三是抽象產品,...
三 抽象工廠模式
抽象工廠模式可以向客戶端提供乙個介面,使得客戶端在不必指定類例項的具體型別的情況下,能夠建立多個類例項族的類例項物件。public inte ce fruitfactory其中包括公共的抽象角色和具體類的進一步抽象。public inte ce fruitpublic abstract class ...