java 抽象工厂模式

来源:互联网 发布:人工智能有哪些分支 编辑:程序博客网 时间:2024/05/17 01:48

第一步:创建抽象工厂对象

package Abstract_Factory.AbstractFactory;

import Abstract_Factory.IAbstract.Ieating;
import Abstract_Factory.IAbstract.Ispeaking;

/*
* 说明:(1)首先创建抽象工厂类Person_eatingFactory
* (2)抽象工厂提供具体动作(操作)的接口对象,并返回接口对象。
* @author 谢泽鹏
* @createDate 2011-7-7 上午10:51:15
* @type interface
*/
public interface PersonAbstractFactory {
/*
* 返回接口对象
* @return Ieating
* @throws Exception
* 由具体的工厂对象实现该接口
*/
Ieating Create_eating() throws Exception;

/*
* 返回接口对象
* @return
* @throws Exception
* 由具体的工厂对象实现该接口
*/
Ispeaking Creat_speaking() throws Exception;

}

第二步:创建代理工厂(具体工厂)对象,

(1)代理工厂1

package Abstract_Factory.AbstractFactory;

import Abstract_Factory.IAbstract.Ieating;
import Abstract_Factory.IAbstract.Ispeaking;
import Abstract_Factory.ImplAbstract.IeatingImpl;
import Abstract_Factory.ImplAbstract.IspeakingImpl;

/*
* 说明:(1)代理工厂(子工厂)实现抽象工厂类,并创建具体动作(方法)。
* (2)具体动作实现交给具体实现类来完成,并返回。
* @author 谢泽鹏
* @createDate 2011-7-7 上午10:57:40
*
*/
public class Person_speakingFactory implements PersonAbstractFactory {

/返回具体实现接口操作对象/
public Ispeaking Creat_speaking() throws Exception {
return new IspeakingImpl();
}

/返回具体实现接口操作对象/
public Ieating Create_eating() throws Exception {
return new IeatingImpl();
}

}

(2)代理工厂2

package Abstract_Factory.AbstractFactory;

import Abstract_Factory.IAbstract.Ieating;
import Abstract_Factory.IAbstract.Ispeaking;

/*
* 说明:(1)首先创建抽象工厂类Person_eatingFactory
* (2)抽象工厂提供具体动作(操作)的接口对象,并返回接口对象。
* @author 谢泽鹏
* @createDate 2011-7-7 上午10:51:15
* @type interface
*/
public interface PersonAbstractFactory {

/*
* 返回接口对象
* @return Ieating
* @throws Exception
* 由具体的工厂对象实现该接口
*/
Ieating Create_eating() throws Exception;

/*
* 返回接口对象
* @return
* @throws Exception
* 由具体的工厂对象实现该接口
*/
Ispeaking Creat_speaking() throws Exception;

}

第三步:创建具体接口对象

(1)接口1

package Abstract_Factory.IAbstract;
/*
* 说明: 用户提供相关动作(操作)接口。
* @author Administrator
* @createDate 2011-7-7 上午11:36:10
*/
public interface Ieating {

/**声明吃米饭方法**/void eatRice() throws Exception;

}

(2)接口2

package Abstract_Factory.IAbstract;

/*
* 说明: 用户提供相关动作(操作)接口。
*

  • 声明说动作接口

  • * @author 谢泽鹏
    * @createDate 2011-7-7 上午11:36:51
    */
    public interface Ispeaking {
  • /声明说英语的方法/
    void speakEnglish() throws Exception;

    /说汉语的方法/
    void speakChinese() throws Exception;

    }

    第四步: 创建接口实现类对象

    (1)第1个实现类

    package Abstract_Factory.ImplAbstract;

    import Abstract_Factory.IAbstract.Ieating;

    /*
    * 实现用户具体动作(操作)接口类
    * @author 谢泽鹏
    * @createDate 2011-7-7 上午11:37:50
    */
    public class IeatingImpl implements Ieating{

    /具体动作实现操作/
    public void eatRice() throws Exception {
    System.out.println(“——————————”);
    System.out.println(“我吃的的米饭 ,Rice !!!”);
    }

    }

    (2) 第2个实现类

    package Abstract_Factory.ImplAbstract;

    import Abstract_Factory.IAbstract.Ispeaking;

    /*
    * 实现用户具体动作(操作)接口类
    * @author 谢泽鹏
    * @createDate 2011-7-7 上午11:37:50
    */
    public class IspeakingImpl implements Ispeaking{

    /具体动作实现操作/
    public void speakEnglish() throws Exception {
    System.out.println(“————开始学习英语—————–”);
    System.out.println(“学习中……………………………..”);
    System.out.println(“I Can Speak English !”);

    }

    /具体动作实现操作/
    public void speakChinese() throws Exception {
    System.out.println(“————开始学习汉语—————–”);
    System.out.println(“学习中……………………………..”);
    System.out.println(“我可以说汉语: 我是中国人!!!”);
    }
    }

    第五步 Celint测试概要

    package Abstract_Factory.Celint;

    import Abstract_Factory.AbstractFactory.PersonAbstractFactory;
    import Abstract_Factory.AbstractFactory.Person_eatingFactory;
    import Abstract_Factory.AbstractFactory.Person_speakingFactory;

    public class Test_AbstractFactory {

    /**
    * 抽象工厂测试演示
    * @param args
    */
    public static void main(String[] args) {

    /*
    * 说明:(1)抽象工厂指向具体工厂(代理工厂)实现。
    * (2) 由抽象工厂创建具体接口对象
    */
    try {

    //(1)形式1
    PersonAbstractFactory personAbstractFactory_One=new Person_eatingFactory();

    /获取到工厂对象,就可具体实例,调用具体方法/
    personAbstractFactory_One.Creat_speaking().speakEnglish();

    personAbstractFactory_One.Creat_speaking().speakChinese();

    personAbstractFactory_One.Create_eating().eatRice();

    //(1)形式2
    PersonAbstractFactory personAbstractFactory_Two=new Person_speakingFactory();

    /获取到工厂对象,就可具体实例,调用具体方法/
    personAbstractFactory_Two.Creat_speaking().speakEnglish();

    personAbstractFactory_Two.Creat_speaking().speakChinese();

    personAbstractFactory_Two.Create_eating().eatRice();

    } catch (Exception e) {
    e.printStackTrace();
    }

    }

    }

    0 0
    原创粉丝点击