设计模式一、工厂模式
2017-03-29 16:57
253 查看
设计模式part1
工厂方法模式
工厂方法模式分为三种:1、普通工厂模式 2、多个工厂方法模式 3、静态工厂方法模式1) 普通工厂模式
就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建缺点:如果字符串输入不对应就会创建错误
【java】Sender
publicinterface Sender { void send(); }
【java】SmsSender
publicclass SmsSender implements Sender{ @Override publicvoid send() { System.out.println("sms sender"); } }
【java】MailSender
publicclass MailSender implements Sender{ @Override publicvoid send() { System.out.println("mail sender"); } }
【java】SendFactory
publicclass SendFactory { public Sender produce(Stringstr){ if("sms".equals(str)){ returnnew SmsSender(); }elseif("mail".equals(str)){ returnnew MailSender(); }else{ System.out.println("未选择类型"); returnnull; } } }
【java】MainTest
publicclass MainTest { publicstaticvoid main(String[] args) { SendFactoryfactory = new SendFactory(); Sendersender = factory.produce("sms"); sender.send(); } }
2) 多个工厂方法模式
是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象Note:对普通工厂进行改进,使用不通的方法创建不同的对象
【java】Sender
publicinterface Sender { void send(); }
【java】SmsSender
publicclass SmsSender implements Sender{ @Override publicvoid send() { System.out.println("sms sender"); } }
【java】MailSender
publicclass MailSender implements Sender{ @Override publicvoid send() { System.out.println("mail sender"); } }
【java】SendFactory
publicclass SendFactory { public Sender produceSms() { returnnew SmsSender(); } public Sender produceMail() { returnnew MailSender(); } }
【java】MainTest
publicclass MainTest { publicstaticvoid main(String[] args) { SendFactoryfactory = new SendFactory(); Sendersender = factory.produceMail(); sender.send(); } }
3) 静态工厂方法模式
将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。【java】Sender
publicinterface Sender { void send(); }
【java】SmsSender
publicclass SmsSender implements Sender{ @Override publicvoid send() { System.out.println("sms sender"); } }
【java】MailSender
publicclass MailSender implements Sender{ @Override publicvoid send() { System.out.println("mail sender"); } }
【java】SendFactory
publicclass SendFactory { publicstatic Sender produceSms() { returnnew SmsSender(); } publicstatic Sender produceMail() { returnnew MailSender(); } }
【java】MainTest
publicclass MainTest { publicstaticvoid main(String[] args) { Sendersender = SendFactory.produceMail(); sender.send(); } }
相关文章推荐
- 设计模式:工厂
- 简单工厂设计模式-设计模式(1)
- 设计模式之Factory工厂模式
- 设计模式之工厂方法
- 转:C#设计模式之简单工厂篇
- .NET中的设计模式一:工厂模式
- C#设计模式之简单工厂篇
- C#设计模式之简单工厂篇
- .NET实用设计模式:工厂模式(Factory)
- 抽象工厂设计模式(C#)
- .NET中的设计模式一:工厂模式 (转)
- 设计模式[2]-旧话重提之工厂模式
- 设计模式之(2)简单工厂模式
- 设计模式之 工厂方法(Factory)------对象创建型模式
- .NET中的设计模式一:工厂模式 选择自 lane_cn 的 Blog
- C#设计模式学习笔记---简单工厂模式
- Java设计模式:Factory(工厂模式)
- .NET中的设计模式一:工厂模式
- 设计模式[2]-旧话重提之工厂模式
- Java设计模式之工厂模式篇