您的位置:首页 > 编程语言 > Java开发

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

2013-05-02 17:09 423 查看
点击打开转载处链接

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

  Factory--->UnixFactory/WinFactory

如图所示:



举例说明:

首先创建超级接口:

[java] view
plaincopyprint?

package design.abstractfactory;  

  

  

/** 

 * 文件名称:design.singleton.Singleton.java 

 * 创建人:Fei Wong 

 * 创建时间: 2012-06-20 

 * 电子邮箱:feiwong8@126.com 

 * 举例:举例动物 

 * */  

public interface IAnimalDAO {  

    /** 

     * 动物的公有的活动,吃 睡 喝 

     * */  

    void eat() ;   

      

    void sleep() ;  

      

    void drink() ;   

}  

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

[java] view
plaincopyprint?

package design.abstractfactory;  

  

  

/** 

 * 文件名称:design.singleton.Singleton.java 

 * 创建人:Fei Wong 

 * 创建时间: 2012-06-20 

 * 电子邮箱:feiwong8@126.com 

 * 类说明,具体到狗这个动物,实现动物这个超级接口, 

 * 然后实现狗是如何吃饭、喝水和睡觉的。 

 * */  

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( "小狗睡觉。。。" );   

    }  

  

}  

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

[java] view
plaincopyprint?

package design.abstractfactory;  

/** 

 * 文件名称:design.singleton.Singleton.java 

 * 创建人:Fei Wong 

 * 创建时间: 2012-06-20 

 * 电子邮箱:feiwong8@126.com 

 * 类说明,具体到猫这个动物,实现动物这个超级接口, 

 * 然后实现猫是如何吃饭、喝水和睡觉的。 

 * */  

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( "小猫睡觉。。" );   

    }  

  

}  

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

[java] view
plaincopyprint?

package design.abstractfactory;  

  

public class Factory {  

  

    public static IAnimalDAO createDog() {  

  

        return new Dog();  

    }  

  

    public static IAnimalDAO createCat() {  

  

        return new Cat();  

    }  

}  

创建Main方法:

[java] view
plaincopyprint?

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() ;  

    }  

  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: