美文网首页程序员Java设计模式
设计模式系列-简单工厂模式

设计模式系列-简单工厂模式

作者: 特立独行的猪手 | 来源:发表于2017-03-29 19:04 被阅读256次

    JAVA设计模式系列:

    定义

    简单工厂模式又叫做静态工厂方法模式,是常用的实例化对象模式。

    角色

    • 工厂类:工厂类包含了负责创建所有实例具体逻辑;可以直接被外界调用来创建所需要的对象。

    • 抽象产品类:工厂类所创建对象的父类。

    • 具体产品类:工厂类创建的具体对象。

    实现

    这里简单写一个示例来实现普通工厂模式。

    类图

    抽象产品类

    public interface IFruit {
    
        void get();
    }
    

    定义了一个抽象水果类IFruit,其中包含一个get()

    具体产品类

    public class Apple implements IFruit {
    
        @Override
        public void get() {
            System.out.println("I am a apple.");
        }
    }
    
    public class Orange implements IFruit {
    
        @Override
        public void get() {
            System.out.println("I am a orange." );
        }
    }
    

    定义了2个具体水果类AppleOrange分别实现了IFruitget()方法。

    工厂类

    public class FruitFactory {
    
        public static IFruit getFruit(String type) {
    
            IFruit ifruit = null;
            if ("apple".equals(type)) {
                ifruit = new Apple();
            } else if ("orange".equals(type)) {
                ifruit = new Orange();
            }
            return ifruit;
        }
    }
    

    工厂类包含一个静态方法getFruit(),功能是:根据不同的type返回不同的水果实例。

    测试

        public static void main(String[] args) {
    
            IFruit apple = FruitFactory.getFruit("apple");
            IFruit orange = FruitFactory.getFruit("orange");
    
            apple.get();
            orange.get();
        }
    

    分别调用水果工厂FruitFactory类来实例化2个不同的水果实例。运行结果:

    I am a apple.
    I am a orange.
    

    总结

    • 优点:可以隐藏具体类名称,提供参数给使用者直接调用;避免直接实例化对象,无需准备构造函数参数。

    • 缺点:在增加新产品的时候,必须修改工厂类,违背了开放封闭原则。

    JAVA设计模式系列:

    相关文章

      网友评论

        本文标题:设计模式系列-简单工厂模式

        本文链接:https://www.haomeiwen.com/subject/ayjyottx.html