工厂方法(Factory Method)
来源:互联网 发布:淘宝首页添加旺旺 编辑:程序博客网 时间:2024/05/08 10:06
工厂方法(Factory Method) 在工作中的也是很常见的。
使用场景:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的实例化延迟到其子类。
特点:
1,被创建对象的类实现共同的接口(程序运行时期动态绑定具体哪个类)
2,工厂:提供创建对象的方法(根据不同的标示,或者提供不同的方法对不同的类进行创建)
3,client:持有工厂或者调用工厂不同的静态方法实现对不同类型的类进行实例化。
工厂方法有三种变形普通工厂,多方法工厂,静态工厂
在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,
所以,大多数情况下,我们会选用第三种——静态工厂方法模式。
缺点:如果添加一个被创建的类必须要修改工厂类,添加一个新的方法
UML类图:
实现:
/** * 被创建的类实现的接口 */public interface Sender { public void send();}
public class SmsSender implements Sender { @Override public void send() { System.out.println("sms send method"); }}
public class MailSender implements Sender { @Override public void send() { System.out.println("mail send method"); }}
/** * 普通工厂 */public class SendFactory { /** * 通过传入的type进行判断具体需要实例化哪个类 */ public Sender produce(String type){ Sender sender=null; if("mail".equals(type)){ sender = new MailSender(); }else if("sms".equals(type)){ sender = new SmsSender(); }else{ System.out.println("没有此类型"); } return sender; }}
/** * 多方法工厂 */public class SendFactory2 { //为每一个类创建一个实例化的方法 public Sender produceMail(){ return new MailSender(); } public Sender produceSms(){ return new SmsSender(); }}
/** * 静态工厂 */public class SendFactory3 { public static Sender produceMail(){ return new MailSender(); } public static Sender produceSms(){ return new SmsSender(); }}
/** * Created by lyyz on 2017/7/12. */public class FactoryTest { public static void main(String[] args) { //普通工厂模式 SendFactory sendFactory = new SendFactory(); Sender sender = sendFactory.produce("mail"); sender.send(); //多方法工厂模式 SendFactory2 sendFactory2 = new SendFactory2(); Sender sender2 = sendFactory2.produceMail(); sender2.send(); //静态工厂模式 Sender sender3 = SendFactory3.produceMail(); sender3.send(); }}
阅读全文
0 0
- Factory Method 工厂方法
- 工厂方法factory method
- 工厂方法Factory Method
- 工厂方法,Factory Method
- 工厂方法(Factory Method)
- 工厂方法(Factory Method)
- 工厂方法 Factory Method
- 工厂方法(Factory Method)
- 工厂方法(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法(Factory Method)
- Factory Method(工厂方法)
- 浅析工厂方法(factory method)
- Factory Method(工厂方法模式)
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法模式 Factory Method
- matlab对于固定长度的行的文本,最后一行的读取
- P3819 松江1843路
- 【重磅推荐】MySQL大表优化方案(最全面)
- 圆桌会议(圆排列)
- Bootstrap Table使用整理(六)-常用操作
- 工厂方法(Factory Method)
- 友元函数简介
- 构造函数
- Set,List,Map,Vector,ArrayList的区别
- JZOJ 5281. 【NOIP提高组模拟A组8.15】钦点
- ViewContainerRef
- 实用互联网软件开发与调试工具
- sql server转换科学计数法数值字符串为decimal 类型
- jstack Dump 日志文件中的线程状态