Java 23种设计模式之简单工厂模式
来源:互联网 发布:2014年流行的网络歌曲 编辑:程序博客网 时间:2024/06/05 01:00
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.小结
优: 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息, 决定究竟应该创建哪个具体类的对象. 缺: 违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中; 它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。
阅读全文
0 0
- Java 23种设计模式之简单工厂模式详解
- Java 23种设计模式之简单工厂模式
- JAVA设计模式之工厂模式之简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- Java设计模式之简单工厂模式
- 【Java设计模式】之简单工厂模式
- Java--设计模式之简单工厂模式
- java设计模式之简单工厂模式
- Java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- Java设计模式之简单工厂模式
- Java设计模式之简单工厂模式
- Java设计模式之“简单工厂模式”
- Java设计模式之简单工厂模式
- 辗转相除法求最大公约数
- php字符串的有序拆分
- 【Java I/O】如何用Java读写文件
- 160个练手CrackMe-035
- Latex三个表格并列排版
- Java 23种设计模式之简单工厂模式
- struts2值栈 set和push和el在jsp中取值
- 实验:实现Mogilefs分布式存储服务
- 二叉树的基本操作
- Android 实现分割线的几种方式
- dubbo2.8.4的各种坑记录
- Jade笔记
- retrofit2+rxjava1的相关用法(总结篇)
- Atitit q2016 qb doc list on home ntpc.docx