java设计模式,工厂模式
来源:互联网 发布:oracle数据库卸载 编辑:程序博客网 时间:2024/06/11 03:13
第一种:普通工厂第二种:多个工厂第三种:静态工厂①普通工厂package com.dasenlin.factory;/** * 工厂模式普通工厂 * @author Administrator * */public class OrdinaryFactory { public static void main(String[] args) { SendFactory factory =new SendFactory(); Sender sender=factory.produce("mail"); sender.send(); }}/** * 共同的接口 * @author Administrator * */interface Sender{ public void send();}/** * 实现的邮箱发送 * @author Administrator * */class MailSender implements Sender{ @Override public void send() { System.out.println("我是邮箱发送的数据de实现"); }}/** * 实现的Msn发送 * @author Administrator * */class MsnSender implements Sender{ @Override public void send() { System.out.println("我是MSN发送的数据de实现"); } }/** * 创建工厂 * @author Administrator * */class SendFactory{ public Sender produce(String type){ if("mail".equals(type)){ return new MailSender(); }else if("msn".equals(type)){ return new MsnSender(); }else{ System.out.println("请输入正确的发送类型"); return null; } }}②多个工厂package com.dasenlin.factory;/** * 多个工厂,修改下工厂类就可以了 * @author Administrator * */public class ManyFactory { public static void main(String[] args) { SendFactory2 product2 =new SendFactory2(); Sender2 sender2=product2.qqSenderProduce(); sender2.send(); Sender2 sender =product2.weixinSenderProduce(); sender.send(); }}/** * 发送的接口 * @author Administrator * */interface Sender2{ public void send();}/** * QQ发送的实现类 * @author Administrator * */class QQSender implements Sender2{ @Override public void send() { System.out.println("QQ"); }} /** * 微信发送的实现类 * @author Administrator * */class WeixinSender implements Sender2{ @Override public void send() { System.out.println("WeiXin"); }}/** * 工厂发射类中的多个工厂 */class SendFactory2{ /** * qq发射工厂 * @return */ public Sender2 qqSenderProduce(){ return new QQSender(); } public Sender2 weixinSenderProduce(){ return new WeixinSender(); }}③静态工厂package com.dasenlin.factory;/** * 静态工厂方法模式,是在多个工厂方法的基础上,添加为静态方法,可以直接调用而无需实例化 * @author Administrator *工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。 *在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类, *所以,大多数情况下,我们会选用第三种——静态工厂方法模式。 */public class StaticFactory { public static void main(String[] args) { Sender3 sender3=SendFactory3.qqSenderProduce(); sender3.send(); }}/** * 发送的接口 * @author Administrator * */interface Sender3{ public void send();}/** * QQ发送的实现类 * @author Administrator * */class QQSender2 implements Sender3{ @Override public void send() { System.out.println("QQ"); }} /** * 微信发送的实现类 * @author Administrator * */class WeixinSender2 implements Sender3{ @Override public void send() { System.out.println("WeiXin"); }}/** * 工厂发射类中的多个工厂 */class SendFactory3{ /** * qq发射工厂 * @return */ public static Sender3 qqSenderProduce(){ return new QQSender2();//再建一个工厂的话,则需要在修改工厂类,违背了闭包原则 } public static Sender3 weixinSenderProduce(){ return new WeixinSender2(); }}
0 0
- java设计模式----工厂模式
- java 设计模式-工厂模式
- java设计模式-工厂模式
- java设计模式------工厂模式
- JAVA设计模式-工厂模式
- Java 设计模式 工厂模式
- Java设计模式-工厂模式
- Java设计模式--工厂模式
- Java设计模式 - 工厂模式
- java设计模式--工厂模式
- Java设计模式:工厂模式
- Java设计模式--工厂模式
- java设计模式-------工厂模式
- java设计模式------工厂模式
- JAVA设计模式:工厂模式
- java设计模式:工厂模式
- java设计模式 ----工厂模式
- Java设计模式--工厂模式
- 不良资产债转股 防范与对策齐飞
- 关系数据库还是NoSQL数据库
- 报错Processing of multipart/form-data request failed. /upload/A.tmp (No such file or directory)
- 折半查找
- java注解基础
- java设计模式,工厂模式
- android可拖动排序GridView实现
- REST简介
- linux上传下载文件工具lrzsz
- mysql sql语句生成日历表
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (四)问题汇总
- centos6.5安装xrdp
- 简述 Hibernate 和 JDBC 的区别、优缺点
- Python发邮件