简单工厂模式

模式定义

简单工厂模式:又称为静态工厂方法模式,属于类的创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例,简单工厂模式单独创建一个工厂类负责创建其他类的实例。被创建的实例具有共同的父类。

模式结构

 模式分析

简单工厂模式不属于Gof 23个基本设计模式,但可以作为学习Gof的工厂模式的一个先导。简单工厂模式的要点在于,当你需要什么,只要传入一个正确的参数,就可以获取你想要的实例对象,而无需知道其创建细节。

优点:

(1)工厂类中含有必要的判断逻辑,用户可以免除创建对象的责任,它提供了一个专门的工厂类。

(2)用户无需知道具体的产品类的类名,只需知道产品类对应的参数,减少使用者的记忆量。

(3)在一定程度上,提高系统的灵活性。

缺点:

(1)一旦工厂类无法运行,会导致整个系统瘫痪

(2)会增加系统的类数,在一定程度上增加了系统的复杂度和理解难度

(3)系统扩展困难,产品类型较多时,工厂类的逻辑会更复杂,不利于系统的扩展和维护。

电视案例

TV接口类

package com.zck.simpleFactory;

public interface TV {
    public void play();
}

HaierTV类

package com.zck.simpleFactory;

public class HaierTV implements TV {

    public void play() {
        System.out.print("海尔电视正在播放
");
    }

}

HisenseTV类

package com.zck.simpleFactory;

public class HisenseTV implements TV {

    public void play() {
        System.out.print("海信电视正在播放
");
    }

}

工厂类

package com.zck.simpleFactory;

public class TVFactory {
    public static TV produceTV(String brand){
        if (brand.equalsIgnoreCase("haier")) {
            return new HaierTV();
        }
        else if (brand.equalsIgnoreCase("hisense")) {
            return new HisenseTV();
        }else{
            return null;
        }
    }
}

测试类

package com.zck.simpleFactory;

public class Client {

    public static void main(String[] args) {
        TV tv1,tv2;
        tv1 = TVFactory.produceTV("haier");
        tv1.play();
        tv2 = TVFactory.produceTV("hisense");
        tv2.play();
    }

}

测试结果

原文地址:https://www.cnblogs.com/2016-zck/p/13857504.html