Java实现factory抽象工厂设计模式的小案例

Posted Acmen-zym

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实现factory抽象工厂设计模式的小案例相关的知识,希望对你有一定的参考价值。

1、先创建抽象层的工厂和对象

/**
 * 抽象工厂类
 */
public abstract class AbstractFactory 
    public abstract EventAbstract createEvent();

    public abstract ToolAbstract createTool();


/**
 * 事件抽象类
 */
public abstract class EventAbstract 
    public abstract void occurEvent();


/**
 * 工具抽象类
 */
public abstract class ToolAbstract 
    //使用工具
    public abstract void useTool();


2、具体工厂和实现类

1、魔法世界

public class MagicFactory extends AbstractFactory 
    public EventAbstract createEvent() 
        return new MagicEvent();
    

    public ToolAbstract createTool() 
        return new MagicTool();
    

public class MagicEvent extends EventAbstract 
    public void occurEvent() 
        System.out.println("遇到一只哥布林");
    

public class MagicTool extends ToolAbstract 
    public void useTool() 
        System.out.println("魔法师使用法术球做为工具");
    


2、现代世界

public class ModernFactory extends AbstractFactory 
    public EventAbstract createEvent() 
        return new ModernEvent();
    

    public ToolAbstract createTool() 
        return new ModernTool();
    

public class ModernEvent extends EventAbstract 
    public void occurEvent() 
        System.out.println("遇到恐怖份子");
    

public class ModernTool extends ToolAbstract 
    public void useTool() 
        System.out.println("现代人使用机枪做为工具");
    

3、原始世界

public class OriginalFactory extends AbstractFactory 
    public EventAbstract createEvent() 
        return new OriginalEvent();
    

    public ToolAbstract createTool() 
        return new OriginalTool();
    

public class OriginalEvent extends EventAbstract 
    public void occurEvent() 
        System.out.println("遇到一只长毛象");
    

public class OriginalTool extends ToolAbstract 
    public void useTool() 
        System.out.println("原始人使用石矛做为工具");
    

执行案例代码

    public static void main(String[] args) 
        //用抽象工厂接收具体工厂并且调用实现方法
        AbstractFactory maFactory = new MagicFactory();//魔法世界工厂
        maFactory.createEvent().occurEvent();//事件触发
        maFactory.createTool().useTool();//使用工具
        AbstractFactory moFactory = new ModernFactory();//现代世界工厂
        moFactory.createEvent().occurEvent();//事件触发
        moFactory.createTool().useTool();//使用工具
        AbstractFactory orFactory = new OriginalFactory();//原始世界工厂
        orFactory.createEvent().occurEvent();//事件触发
        orFactory.createTool().useTool();//使用工具
    

执行效果

以上是关于Java实现factory抽象工厂设计模式的小案例的主要内容,如果未能解决你的问题,请参考以下文章

Abstract Factory模式(设计模式)

抽象工厂模式 (Abstract Factory Pattern)

Java设计模式:Abstract Factory(抽象工厂)模式

JAVA设计模式——抽象工厂模式案例实现

抽象工厂模式(abstarct factory pattern)和工厂模式(factory pattern)的比较

《Java与模式》学习笔记——Abstract Factory