java设计模式之--工厂模式
来源:互联网 发布:淘宝发错货赔偿规则 编辑:程序博客网 时间:2024/06/06 01:13
1.普通工厂模式概述:
在面向接口编程中我们知道一个接口可能有许多的具体实现类,而且这些实现类实现的方法也不尽相同,如果单通过接口去进行实例的创建是比较麻烦的,那么有没有一种方法可以创建我们想要的实例呢?工厂模式就是这样一种建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
代码展示:
创建一个接口:
public interface Sender { public void send();}创建两个接口实现类:
public class MailSender implements Sender { @Override public void send() { System.out.println("发送邮件信息!"); }}
public class SmsSender implements Sender { @Override public void send() { System.out.println("发送SMS信息!"); }}创建工厂类:
public class SendFactory{ //普通工厂模式 public Sender produce(String type) { if ("mail".equals(type)) { return new MailSender(); } else if ("sms".equals(type)) { return new SmsSender(); } else { System.out.println("请输入正确的类型!"); return null; } } //静态工厂模式--常用 public static Sender sendMail() { return new MailSender(); } public static Sender sendSms() { return new SmsSender(); } }测试类:
public class Test { public static void main(String[] args) { SendFactory factory = new SendFactory(); Sender sender = factory.produce("sms"); sender.send(); } }这样,就通过工厂类创建了我们需要的实例.
2.抽象工厂模式
工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。通过代码,就比较容易理解。
代码示例:
新创建一个接口,用于多个工厂类的实现:
public interface Provider { public Sender produce();//这里用到前面的Sender接口}
创建两个工厂类实现 Provider接口:
public class MailFactory implements Provider{ @Override public Sender produce(){ return new MailSender(); }}
public class SmsFactory implements Provider{ @Override public Sender produce(){ return new SmsSender(); }}这里的部分代码用到前面的类,具体实现的时候import就好,新建测试类:
public class Test { public static void main(String[] args) {Provider provider = new MailFactory();//返回MialFactory对象 Sender sender = provider.produce();//返回MailSender对象 sender.send(); }}
阅读全文
0 0
- Java设计模式之工厂设计模式
- [java]设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- JAVA设计模式之工厂设计模式
- java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- 《java设计模式》之工厂设计模式
- JAVA设计模式之工厂模式之简单工厂模式
- JAVA设计模式之工厂模式之工厂方法模式
- JAVA设计模式之工厂模式之抽象工厂模式
- Java设计模式之工厂
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- STM8学习笔记三----按键实验
- React 组件解耦之道
- QT 多线程(QThread)里调用线程池(QThreadPool )与主界面进行通讯
- JavaScript中SetInterval与setTimeout的用法详解
- bzoj1500维修数列splay
- java设计模式之--工厂模式
- UnityShader顶点动画实现Mage-Fiers漂移效果
- 真实、迅雷、QQ旋风下载地址转换
- C++ Template实例化(13)---《C++ Templates》
- 编程之美2.16-最长递增子序列(Longest Subsequence)
- SpringMVC和Struts2的区别
- 经典OJ与算法网站
- 树莓派3 蓝牙的配置
- TP5 + Vue.js 分页效果