抽象工廠模式
抽象工廠模式是將一個簡單東西變爲複雜的東西,但是這樣的可以方便以後的擴展,實現開閉原則,需要擴展只需要增加代碼,不需要需改以前的代碼。
抽象工廠類:負責加工產品的工廠,下面還有具體的工廠類
抽象產品類:一個產品的總稱 。下面還有具體實現產品類
具體實現類:相當於客戶端的調用。
以手機爲例:
抽象工廠:
相當於一個手機總產,負責接收訂單
public interface IFactory {
MB create();
}
工廠的具體實現類:
三星手機:
public class UnderSanXingFactory implements IFactory{
@Override
public ShouJi create() {
// TODO Auto-generated method stub
return new Sanxing();
}
}
小米手機:
public class UnderXiaoMiFactory implements IFactory{
@Override
public ShouJi create() {
// TODO Auto-generated method stub
return new XiaoMi();
}
}
每個工廠負責生產具體的手機,以後擴展只需要實現抽象工廠類,即可!
抽象具體類:
相當於一個手機的總稱呼:
public class ShouJi{
public ShouJi() {
// TODO Auto-generated constructor stub
}
}
手機具體的分類:
三星:
public class SanXing extends ShouJi{
public void createShouji(){
System.out.println(“SanXing”);
}
}
小米
public class XiaoMi extends ShouJi{
public void createShouji(){
System.out.println(“XiaoMi”);
}
}
要增加一個手機,只要繼承手機類即可!!
客戶端的調用:
public class FactoryMain {
public static void main(String[] args) {
// 調用生產三星手機
IFactory factory = new UndeSanxingFactory();
SanXing sanXing= (SanXing) factory.create();
sanXing.create();
// 調用生產小米手機
IFactory iFactory = new UnderXiaoMiFactory();
XiaoMi xiaoMi= (XiaoMi) iFactory.create();
xiaoMi.createShouJi();
}
}
這樣既可以完成一個抽象工廠!