Java-工厂设计模式

时间:2019-10-14
本文章向大家介绍Java-工厂设计模式,主要包括Java-工厂设计模式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

                           Java工厂设计模式 

一、关于工厂设计模式

介绍设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,

    并且是通过使用一个共同的接口来指向新创建的对象。

意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

主要解决:主要解决接口选择的问题。

何时使用:我们明确地计划不同条件下创建不同实例时。

如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。

分类:普通简单工厂、多个方法的简单工厂、多个静态方法的简单工厂、工厂设计模式。

二、代码实现

  简单工厂:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图

  

举例如下:(我们举一个发送邮件和短信的例子)

首先,创建二者的共同接口:

Sender

package pers.hupo.hupow.factory;
/**
 * @author hupo
 * 创建一个接口
 * */
public interface Sender {
    void Send();
}
View Code

其次,创建实现类:

MailSender

package pers.hupo.hupow.factory;

/**
 * @author hupo
 * Sender实现类
 * */
public class MailSender implements Sender {
    @Override
    public void Send() {
        System.out.println("this mail message");
    }
}
View Code

SmsSender

package pers.hupo.hupow.factory;

/**
 * @author hupo
 * Sender实现类
 * */
public class SmsSender implements Sender {
    @Override
    public void Send() {
        System.out.println("this sms message");
    }
}
View Code

最后,建工厂类:

package pers.hupo.hupow.factory;

/**
 * @author hupo
 * 工厂类
 * */
public class SendFactory {

    public Sender produce(String type) {
        if ("mail".equals(type)) {
            return new MailSender();
        }
        if ("sms".equals(type)) {
            return new SmsSender();
        }
        return null;
    }
}
View Code

测试方法

package pers.hupo.hupow.factory;



public class FactoryTest {
    public static void main(String[] args) {
        SendFactory sendFactory = new SendFactory();
        Sender sender = sendFactory.produce("sms");
        sender.Send();
    }
}
View Code

输出结果:

 

 

原文地址:https://www.cnblogs.com/hupo-wey/p/11672418.html