美文网首页
Java设计模式-简单工厂模式

Java设计模式-简单工厂模式

作者: Sammy_ao | 来源:发表于2017-09-21 12:45 被阅读0次

Java设计模式-简单工厂模式

简单工厂模式(逻辑判断)

对实现同一个接口的类,我们可以使用一个工厂类来封装这些类的创建,通过传入一个类的标识来获得该类的示例(逻辑判断)。这种设计模式我们称作简单工厂设计模式。
下面用UML图来表示该设计模式下类与类之间的关系


示例代码

package factory;

public class SimpleFactoryMethodTest
{
    public static void main(String[] args)
    {
        SimpleFactory factory = new SimpleFactory();
        Sender s1 = factory.createSender("email");
        s1.send();
        Sender s2 = factory.createeSender("sms");
        s2.send();
    }
}

class SimpleFactory
{
    public Sender createSender(String name)
    {
        if ("email".equals(name))
        {
            return new EmailSender();
        }
        else if ("sms".equals(name))
        {
            return new SMSSender();
        }
        else
        {
            System.out.println(name + " not found!");
            return null;
        }
    }
}

interface Sender
{
    public void send();
}

class EmailSender implements Sender
{
    @Override public void send()
    {
        System.out.println(getClass().getName() + " send");
    }
}

class SMSSender implements Sender
{
    @Override public void send()
    {
        System.out.println(getClass().getName() + " send");
    }
}

简单工厂模式(多个方法)

多个方法的简单工厂模式本质上还是一种简单工厂模式,只不过将原来的逻辑判断分到了不同的执行方法中来,每一个不同的类对应一个产生它们的方法。这种模式可以避免出现逻辑判断条件不存在的错误,由工厂调用者选择实例化的类。


示例代码

package factory;

public class MultiFactoryMethodTest
{
    public static void main(String[] args)
    {
        SimpleFactory factory = new SimpleFactory();
        Sender s1 = factory.produceEmailSender();
        s1.send();
        Sender s2 = factory.produceSMSSender();
        s2.send();
    }
}

class SimpleFactory
{
    public Sender produceEmailSender()
    {
        return new EmailSender();
    }

    public Sender produceSMSSender()
    {
        return new SMSSender();
    }
}

interface Sender
{
    public void send();
}

class EmailSender implements Sender
{
    @Override public void send()
    {
        System.out.println(getClass().getName() + " send");
    }
}

class SMSSender implements Sender
{
    @Override public void send()
    {
        System.out.println(getClass().getName() + " send");
    }
}

简单工厂模式(静态方法)

静态方法的简单工厂模式将原有工厂类中的方法改为静态方法,这样就不用创建工厂类实例了。

示例代码

package factory;

public class StaticFactoryMethodTest
{
    public static void main(String[] args)
    {
        Sender s1 = SimpleFactory.produceEmailSender();
        s1.send();
        Sender s2 = SimpleFactory.produceSMSSender();
        s2.send();
    }
}

class SimpleFactory
{
    public static Sender produceEmailSender()
    {
        return new EmailSender();
    }

    public static Sender produceSMSSender()
    {
        return new SMSSender();
    }
}

interface Sender
{
    public void send();
}

class EmailSender implements Sender
{
    @Override public void send()
    {
        System.out.println(getClass().getName() + " send");
    }
}

class SMSSender implements Sender
{
    @Override public void send()
    {
        System.out.println(getClass().getName() + " send");
    }
}

下一篇:JAVA设计模式-工厂方法模式

相关文章

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

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 简单工厂模式 定义 简单工厂模式又叫做静态工厂方法模式...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 简单工厂模式

    Java23种设计模式--简单工厂模式 一、什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法...

  • 设计模式系列-抽象工厂模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 简单工厂模式 抽象工厂模式 抽象工厂模式 定义 抽象工...

  • JAVA基础23种设计模式----简单工厂模式--MonkeyK

    JAVA基础23种设计模式----简单工厂模式--MonkeyKing 简单工厂模式属于类的创建模型模式,又叫静态...

  • Java设计模式教程

    Java设计模式教程 Java工厂设计模式 Java抽象工厂模式 Java单例模式 Java建造者(Builder...

  • Java 设计模式1-简单工厂模式

    简单工厂模式不属于标准的Java 23设计模式之内。根据分类,简单工厂模式又分类为:1.普通简单工厂模式。2.多方...

  • Java设计模式-工厂方法模式

    上一篇:Java设计模式-简单工厂模式 与简单工厂模式的对比 在简单工厂模式中,每当我们添加了新的功能(例如例子中...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • Java与模式

    《JAVA与模式》之简单工厂模式《JAVA与模式》之工厂方法模式《JAVA与模式》之抽象工厂模式

网友评论

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

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