抽象工厂模式:
提供一个创建一系列相关活相互依赖对象的接口,而无需指定他们具体的类。
举2个例子:
1.BOSS要求提供JDBC,Hibernate,Ibatis等多套数据库操作解决方案,能够无成本地在这三个解决方案间切换。
2.系统的产品有多于一个的产品族,而系统只消费其中某一族的产品(Unix&Windows)
Button--->UnixButton/WinButton
Text----->UnixText/WinText
Unix产品族和Windows产品族,不会同时使用。
创建猫类,实现超级接口:
提供一个创建一系列相关活相互依赖对象的接口,而无需指定他们具体的类。
举2个例子:
1.BOSS要求提供JDBC,Hibernate,Ibatis等多套数据库操作解决方案,能够无成本地在这三个解决方案间切换。
2.系统的产品有多于一个的产品族,而系统只消费其中某一族的产品(Unix&Windows)
Button--->UnixButton/WinButton
Text----->UnixText/WinText
Unix产品族和Windows产品族,不会同时使用。
Factory--->UnixFactory/WinFactory
如图所示:
举例说明:
首先创建超级接口:
package design.abstractfactory;
/**
* 文件名称:design.singleton.Singleton.java
* 创建人:Fei Wong
* 创建时间: 2012-06-20
* 电子邮箱:
* 举例:举例动物
* */
public interface IAnimalDAO {
/**
* 动物的公有的活动,吃 睡 喝
* */
void eat() ;
void sleep() ;
void drink() ;
}
创建狗类,实现超级接口:
package design.abstractfactory;
/**
* 文件名称:design.singleton.Singleton.java
* 创建人:Fei Wong
* 创建时间: 2012-06-20
* 电子邮箱:
* 类说明,具体到狗这个动物,实现动物这个超级接口,
* 然后实现狗是如何吃饭、喝水和睡觉的。
* */
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
* 电子邮箱:
* 类说明,具体到猫这个动物,实现动物这个超级接口,
* 然后实现猫是如何吃饭、喝水和睡觉的。
* */
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() ;
}
}