Java工廠模式淺析理解


由於本人缺乏工作經驗,本篇文章作為隨筆,只是對工廠模式有一個簡單的認識

工廠模式分為以下三種:

1:簡單工廠(Simple Factory)。
2:工廠方法(Factory Method)。
3:抽象工廠(Abstract Factory)。

本次模擬的是第三種——抽象工廠

抽象工廠的大致思路

  多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
  一個抽象工廠類,可以派生出多個具體工廠類。
   每個具體工廠類可以創建多個具體產品類的實例。

好了,不多說,根據上面的思路來貼一下部分代碼

在這里,我是以汽車、食物兩種類別來進行模擬

汽車——寶馬、奔馳

食物——蘋果、橘子

首先編寫食物類,在這里,我將Food作為抽象類(也可作為接口)

public abstract class Food {

    public abstract void eat();
}

汽車也一樣

public abstract class Car {

    public abstract void creat();
}

然后將,寶馬,奔馳繼承Car ,橘子,蘋果繼承食物

public class Apple extends Food{

    public Apple() {
        super();
        this.eat();
    }
    @Override
    public void eat() {
        System.out.println("Apple...eat");
        
    }

}
public class Benz extends Car{

    @Override
    public void creat() {
        System.out.println("benz...creat");
    }

}
public class Orange extends Food{

    @Override
    public void eat() {
        System.out.println("Orange...eat");        
    }
public class BMW  extends Car{

    @Override
    public void creat() {
        System.out.println("BMW...creat");       
    }

}

然后,下一個思路就是將工廠分為A和B 實現分類顯示的功能,在這里我將Apple和BMW作為FactoryA ,Orange和Benz作為FactoryB

並且,將FactoryA和FactoryB實現Factory的接口以實現分類的效果

public class Factory1 implements Factory {
    public Car creat() {
        return new Benz();
    }
    public Food eat() {
        return new Apple();
    }

}

至此,以達到需要的效果

當調用FactoryA時,控制台打印出Apple,BMW  

當調用FactoryA時,控制台打印出Orange,Benz

 

聲明:本篇文章理解於 http://www.cnblogs.com/zhouqiang/archive/2012/07/20/2601365.html的思路,但其中也融合了本人的思路。

如有其他意見,請評論版上評論,謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM