Java基礎-FileInputStream位元組輸入流讀取檔案方式
阿新 • • 發佈:2022-04-14
3.2 抽象工廠模式
就像每個品牌都擁有自己的系列產品,同時擁有自己的工廠來生產這些產品,一般自己的品牌是不會讓其他品牌的工廠生產。大家逛淘寶的時候發現幾乎所有的服裝品牌都不止是賣衣服,同時還有自己品牌的鞋子包包。這就是品牌系列。
public interface phone { void call(); } public interface router { void connect(); } //小米產品 public class xiaomiPhone implements phone{ @Override public void call() { System.out.println("用小米手機打電話"); } } public class xiaomiRouter implements router{ @Override public void connect() { System.out.println("小米路由器連線"); } } //華為產品 public class huaweiPhone implements phone{ @Override public void call() { System.out.println("用華為手機打電話"); } } public class huaweiRouter implements router{ @Override public void connect() { System.out.println("用華為路由器連線"); } }
抽象工廠
public interface Factory {
phone createPhone();
router createRouter();
}
小米工廠:
public class xiaomiFactory implements Factory{ @Override public phone createPhone() { return new xiaomiPhone(); } @Override public router createRouter() { return new xiaomiRouter(); } }
華為工廠:
public class huaweiFactory implements Factory{
@Override
public phone createPhone() {
return new huaweiPhone();
}
@Override
public router createRouter() {
return new huaweiRouter();
}
}
測試:
public class test { public static void main(String[] args) { //生產小米系列產品 Factory factory1=new xiaomiFactory(); phone xiaomip=factory1.createPhone(); xiaomip.call(); router xiaomir=factory1.createRouter(); xiaomir.connect(); //生產華為系列產品 Factory factory2=new huaweiFactory(); phone huaweip=factory2.createPhone(); huaweip.call(); router huaweir=factory2.createRouter(); huaweir.connect(); } }
結果:
用小米手機打電話
小米路由器連線
用華為手機打電話
用華為路由器連線
分析:抽象工廠模式結構複雜,程式碼多,但是它完全避開了建立與使用的分離。
簡單工廠模式只有一個工廠。
抽象工廠模式彷彿是再工廠方法之上增加了自己品牌產品。