工廠模式(二)
阿新 • • 發佈:2017-05-29
log ofa clas pri com urn 兩層 實現 需求
工廠方法模式:簡單工廠模式的進一步抽象和推廣。工廠方法模式把簡單工廠中的具體的工廠類劃分為兩層:抽象工廠層+具體工廠層,類圖如下:
涉及到的角色:
抽象產品角色:所有產品的共同父類或共有接口,用以實現多態。
1 //電腦接口 2 public interface Icomputer{ 3 }
具體產品角色:實現抽象產品角色所聲明的接口。
1 //戴爾電腦 2 public class Dell implements Icomputer{ 3 }
1 //聯想電腦 2 public class Lenovo implements Icomputer{ 3 }
抽象工廠角色:工廠方法模式的核心,創建對象工廠類必須繼承或實現它,實際系統中常常是個抽象類。
1 //定義工廠,它是個抽象類 2 public abstract class AbstractFactory{ 3 public abstract Icomputer createComputer(); 4 }
具體工廠角色:實現了抽象工廠接口的具體類,應用程序調用它以創建具體產品。
1 //戴爾工廠 2 public class DellFactory extends AbstractFactory{ 3 @Override 4 public Icomputer createComputer() { 5 return new Dell(); 6 }7 }
1 //聯想工廠 2 public class LenovoFactory extends AbstractFactory{ 3 @Override 4 public Icomputer createComputer() { 5 return new Lenovo(); 6 } 7 }
應用實例:
1 //客戶端 2 public class Client{ 3 private void mian() { 4 AbstractFactory factory = null; 5 factory = newDellFactory(); 6 factory.createComputer(); 7 factory = new LenovoFactory(); 8 factory.createComputer(); 9 } 10 }
這樣做的好處就是只需要有Icomputer.java和AbstractFactory.java編譯就能通過,另外當需求變化時只需要增加或者刪除相應的類就可以。比如要增加華碩電腦只需增加Asus和AsusFactory倆個類即可。
工廠模式(二)