Java 23种设计模式之简单工厂模式
2017-12-03 21:30
507 查看
1. 概念
就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质 是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个 父类或接口)的实例。
2. 创建父类接口
public interface ISender { void send(); //发送方法 }
3. 创建产品类实现父类接口
1.产品一 public class QQSender implements ISender{ @Override public void send() { System.out.println("QQSender send"); } } 2.产品二 public class SmsSender implements ISender{ @Override public void send() { System.out.println("SmsSender send"); } } 3.产品三 public class EmailSender implements ISender{ @Override public void send() { System.out.println("EmailSender send"); } }
4. 创建工厂类,用工厂类创建产品对象
1.实现方式一 普通工厂 public class CommonFactory1{ public ISender produce(String type){ ISender sender; switch (type){ case "sms": sender = new SmsSender(); break; case "qq": sender = new QQSender(); break; case "email": sender = new EmailSender(); break; default: sender = null; System.out.println("produce 类型匹配"); break; } return sender; } } 2.实现方式二 多个工厂 public class MultiFactory{ public ISender produceSms(){ return new SmsSender(); } public ISender produceEmail(){ return new EmailSender(); } public ISender produceQQ(){ return new QQSender(); } } 2.实现方式二 静态工厂 public class StaticFactory{ public static ISender produceSms(){ return new SmsSender(); } public static ISender produceEmail(){ return new EmailSender(); } public static ISender produceQQ(){ return new QQSender(); } }
5. 测试类
public class FactoryTest { @Test public void test1(){ SenderFactory factory = new SenderFactory(); ISender sender = factory.produce("qq"); if(sender!=null){ sender.send(); } } @Test public void test2(){ MultiFactory factory = new MultiFactory(); ISender sender = factory.produceSms(); sender.send(); } @Test public void test3(){ StaticFactory. produceEmail().send(); } }
6.小结
优: 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息, 决定究竟应该创建哪个具体类的对象. 缺: 违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中; 它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。
相关文章推荐
- Java23种设计模式之-----简单工厂模式
- java 设计模式 学习笔记(1) - 简单工厂模式
- 设计模式--创建模式--简单工厂模式--java
- java设计模式之简单工厂模式
- java 设计模式-简单工厂
- java 简单工厂设计模式
- Java简单工厂设计模式
- java 设计模式-创建模式之简单工厂模式
- JAVA设计模式 — 简单工厂模式
- 追MM与设计模式的JAVA实现-简单工厂方法
- 黑马程序员-Java _ 简单工厂设计模式(Plant Pattern)
- java设计模式之简单工厂模式
- java设计模式-创建模式之 简单工厂,工厂方法和抽象工厂的区别总结
- JAVA设计模式--简单工厂
- Java 设计模式中,简单工厂、工厂方法、抽象工厂的区别
- java23种设计模式之工厂模式(Factory)的实现
- Java与设计模式(01)--简单工厂模式
- Java实践之路(设计模式)——工厂模式(简单工厂)
- java_23种设计模式之工厂方法模式
- Java设计模式:工厂模式(一)简单工厂模式