抽象工厂模式:
提供一个创建一系列相关活相互依赖对象的接口,而无需指定他们具体的类。
举2个例子:
1.BOSS要求提供JDBC,Hibernate,Ibatis等多套数据库操作解决方案,能够无成本地在这三个解决方案间切换。
2.系统的产品有多于一个的产品族,而系统只消费其中某一族的产品(Unix&Windows)
  Button--->UnixButton/WinButton
  Text----->UnixText/WinText
  Unix产品族和Windows产品族,不会同时使用。

  Factory--->UnixFactory/WinFactory

如图所示:

JAVA设计模式二--Abstract Factory(抽象工厂)

举例说明:

首先创建超级接口:

package design.abstractfactory; /** * 文件名称:design.singleton.Singleton.java * 创建人:Fei Wong * 创建时间: 2012-06-20 * 电子邮箱:[email protected] * 举例:举例动物 * */ public interface IAnimalDAO { /** * 动物的公有的活动,吃 睡 喝 * */ void eat() ; void sleep() ; void drink() ; }

创建狗类,实现超级接口:

package design.abstractfactory; /** * 文件名称:design.singleton.Singleton.java * 创建人:Fei Wong * 创建时间: 2012-06-20 * 电子邮箱:[email protected] * 类说明,具体到狗这个动物,实现动物这个超级接口, * 然后实现狗是如何吃饭、喝水和睡觉的。 * */ public class Dog implements IAnimalDAO { @Override public void drink() { System.out.println( "小狗喝水" ); } @Override public void eat() { System.out.println( "小狗吃饭" ); } @Override public void sleep() { System.out.println( "小狗睡觉。。。" ); } }
创建猫类,实现超级接口:

package design.abstractfactory; /** * 文件名称:design.singleton.Singleton.java * 创建人:Fei Wong * 创建时间: 2012-06-20 * 电子邮箱:[email protected] * 类说明,具体到猫这个动物,实现动物这个超级接口, * 然后实现猫是如何吃饭、喝水和睡觉的。 * */ public class Cat implements IAnimalDAO { @Override public void drink() { System.out.println( "小猫喝水" ); } @Override public void eat() { System.out.println( "小猫吃饭" ); } @Override public void sleep() { System.out.println( "小猫睡觉。。" ); } }


创建工厂类,用来生产小猫和小狗:

package design.abstractfactory; public class Factory { public static IAnimalDAO createDog() { return new Dog(); } public static IAnimalDAO createCat() { return new Cat(); } }


创建Main方法:

package design.abstractfactory; public class Main { public static void main(String[] args) { IAnimalDAO animal = Factory.createDog() ; // 这里需要Dog这种动物 animal.eat() ; animal.drink() ; animal.sleep() ; animal = Factory.createCat() ; //这里需要Cat这种动物 animal.eat() ; animal.drink() ; animal.sleep() ; } }


相关文章: