首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

土话设计模式_工厂模式之抽象工厂模式

2012-11-12 
白话设计模式_工厂模式之抽象工厂模式??????? 工厂方法模式只是针对一种产品,虽有多个具体产品,但只有一个

白话设计模式_工厂模式之抽象工厂模式

??????? 工厂方法模式只是针对一种产品,虽有多个具体产品,但只有一个抽象产品类;而抽象工厂模式针对多个产品,它有多个抽象产品类,并且每个产品类有多个具体子类产品;抽象工厂模式能够灵活的实现"整套产品"的动态切换。

?

   产品类:

public interface Phone {}public interface Vehicle {}//每个抽象产品有两个具体产品子类public class BMW implements Vehicle{}   //宝马public class QQ implements Vehicle{}   //奇瑞public class IPhone implements Phone{}   //iPhonepublic class XiaoMi implements Phone{}   //小米

? ? ? ? ?工厂类:

public interface AbstractFactory {Vehicle createVehicle();Phone createPhone();}public class ChinaFactory implements AbstractFactory {public Vehicle createVehicle() {return new QQ();}public Phone createPhone() {return new XiaoMi();}}public class ForeignFactory implements AbstractFactory {public Vehicle createVehicle() {return new BMW();}public Phone createPhone() {return new IPhone();}}

????????? 使用抽象工厂:

public class Main {public static void main(String[] args) {AbstractFactory f = new ChinaFactory();Vehicle v = f.createVehicle();Phone p = f.createPhone();System.out.println(v + " " + p);}}

?

??????? 抽象工厂是针对产品族,也就是一套产品的,抽象工厂的具体子类工厂可根据需求生产出一套产品。上面我们动态将 f 赋值为一个ChinaFactory对象,则可从该工厂中取得“奇瑞”交通工具、“小米”手机,如果将 f 赋值为ForeignFatory对象,则可从该工厂中取得“宝马”交通工具、“iPhone”手机,而这种切换可以是动态的。

?

??????? 抽象工厂模式的关键在于:多个抽象产品类(多种产品)、每个抽象产品类派生出多个具体产品、一个抽象工厂生产多个抽象产品、抽象工厂派生多个具体工厂、每个具体工厂根据需求生产一套产品。

?

?

热点排行