由於本人缺乏工作經驗,本篇文章作為隨筆,只是對工廠模式有一個簡單的認識
工廠模式分為以下三種:
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的思路,但其中也融合了本人的思路。
如有其他意見,請評論版上評論,謝謝