1、定义
简单工厂模式:一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。
类图如下:
2、例子
举个例子:用户提交了业务单据后,发送消息通知给相应处理人,消息通知方式有短信、邮件、push通知等。
类图定义如下:
(1)定义Sender接口
public interface Sender { public void send(); }
(2)实现邮件发送类
public class MailSender implements Sender { @Override public void send() { System.out.println("发送邮件"); } }
(3)实现短信发送类
public class SmsSender implements Sender { @Override public void send() { System.out.println("发送短信"); } }
(4)实现PUSH发送类
public class PushSender implements Sender { @Override public void send() { System.out.println("发送Push"); } }
(5)创建发送工厂类
public class SendFactory { public final static int MAIL = 1; public final static int SMS = 2; public final static int PUSH = 3; public Sender createSender(int sendType) { Sender sender = null; switch (sendType) { case SendFactory.MAIL: sender = new MailSender(); break; case SendFactory.SMS: sender = new SmsSender(); break; case SendFactory.PUSH: sender = new PushSender(); break; default: sender = new MailSender(); break; } return sender; } }
(6)我们做一个测试类
public class Test { public static void main(String[] args) { SendFactory factory = new SendFactory(); Sender sender = factory.createSender(SendFactory.PUSH); sender.send(); } }
优势
在简单工厂模式中,工厂类是整个模式的关键,其包含必要的判断逻辑,能够根据外界给定的信息,决定究竟创建哪个类的实例,外界可以不用去关注对象的创建,仅需要负责“消费”对象就可以了,明确区分了责任,有利于结构的优化。
劣势:
简单工厂模式的缺点也体现在其工厂类上,该类集中了所有实例的创建逻辑,违反了高内聚的责任分配原则,当系统的具体产品类不断增多时,工厂类中条件判断过多,不利于扩展及维护,简单工厂模式的这些缺点,利用工厂方法模式可以得到一定的克服。
相关推荐
设计模式之简单工厂模式案例
这是设计模式中简单工厂设计模式的源代码,工程中以一个计算器的示例来体现简单工厂模式的精髓。简单工厂模式主要解决创建对象的问题。
大话设计模式源代码之简单工厂模式 经典代码
完成了,但感觉这也没啥特别的,程序界面黑布隆冬的,内部结构也是最最平常的面向对象,于是我应用了《大话设计模式》这本书中的第一个模式——简单工厂模式,看上去还不错。界面的话,也就是输出的语句变了,system...
本文实例讲述了Python设计模式之简单工厂模式。分享给大家供大家参考,具体如下: 简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 下面使用...
NULL 博文链接:https://dada-fangfang.iteye.com/blog/1021067
java工厂设计模式之简单工厂实例以及介绍,程序已经运行过能正常跑通
主要介绍了c# 设计模式之简单工厂模式的的相关资料,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
设计模式之工厂方法、简单工厂、抽象工厂
主要介绍了java设计模式之简单工厂模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
设计模式之简单工厂模式Demo,博客配套案例
设计模式(简单工厂模式_排序)手写的代码,自己写博客用
JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
本文以实例形式较为详细的介绍了PHP设计模式的简单工厂模式,对于进行PHP程序设计来说有很好的借鉴作用。具体如下: 一、概念 简单工厂模式 【静态工厂方法模式】(Static Factory Method) 是类的创建模式 工厂模式的...
简单工厂模式的C++实例源码。适合初学者集合教程理解简单工厂模式。