1. 程式人生 > >工廠模式(二)

工廠模式(二)

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 = new
DellFactory(); 6 factory.createComputer(); 7 factory = new LenovoFactory(); 8 factory.createComputer(); 9 } 10 }

這樣做的好處就是只需要有Icomputer.java和AbstractFactory.java編譯就能通過,另外當需求變化時只需要增加或者刪除相應的類就可以。比如要增加華碩電腦只需增加Asus和AsusFactory倆個類即可。

工廠模式(二)