Java设计模式之工厂模式
来源:互联网 发布:机甲英雄青龙合体数据 编辑:程序博客网 时间:2024/05/08 11:33
1.工厂方法模式(Factory Method)
- 普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建
- 多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法
- 静态工厂方法模式,将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。
2.UML建模图如下
3.代码实现如下
(1)接口类Sender,代码如下
package com.zhoujian.factorymethod.impl;/** * Created by zhoujian on 2016/12/1. * * 定义发送的接口,具体发送的类型让子类实现 */public interface Sender{ public void send();}
(2)具体实现类MailSender和SmsSender
MailSender.java
package com.zhoujian.factorymethod.bean;import android.content.Context;import android.widget.Toast;import com.zhoujian.factorymethod.impl.Sender;/** * Created by zhoujian on 2016/12/1. * * 发送邮件 要实现接口 */public class MailSender implements Sender{ private Context mContext; public MailSender(Context mContext) { this.mContext = mContext; } @Override public void send() { Toast.makeText(mContext, "发送邮件", Toast.LENGTH_SHORT).show(); }}
SmsSender.java
package com.zhoujian.factorymethod.bean;import android.content.Context;import android.widget.Toast;import com.zhoujian.factorymethod.impl.Sender;/** * Created by zhoujian on 2016/12/1. * * 发送短信 要实现接口 */public class SmsSender implements Sender{ private Context mContext; public SmsSender(Context mContext) { this.mContext = mContext; } @Override public void send() { Toast.makeText(mContext, "发送短信", Toast.LENGTH_SHORT).show(); }}
(3)工厂类SenderFactory
package com.zhoujian.factorymethod.factory;import android.content.Context;import android.widget.Toast;import com.zhoujian.factorymethod.bean.MailSender;import com.zhoujian.factorymethod.bean.SmsSender;import com.zhoujian.factorymethod.impl.Sender;/** * Created by zhoujian on 2016/12/1. * * 发送的工厂类 */public class SenderFactory{ private static final String TAG = "SenderFactory"; /** * 工厂类方法,返回的是一个接口类 * @param type * @return Sender */ //普通工厂模式 (如果传递的字符串出错,就不能创建对象) public Sender produceSend(Context mContext, String type) { if (type.equals("sendmail")) { return new MailSender(mContext); } else if(type.equals("sendsms")) { return new SmsSender(mContext); } else { Toast.makeText(mContext, "请输入正确的类型", Toast.LENGTH_SHORT).show(); return null; } } //多个工厂方法模式(创建多个) public Sender produceMailSend(Context mContext) { return new MailSender(mContext); } public Sender produceSmsSend(Context mContext) { return new SmsSender(mContext); } //静态工厂方法模式(比较常用,类可以直接调用) public static Sender produceMail(Context mContext) { return new MailSender(mContext); } public static Sender produceSms(Context mContext){ return new SmsSender(mContext); }}
4.下载地址
下载地址:https://github.com/zeke123/FactoryMethod
0 0
- Java设计模式之工厂设计模式
- [java]设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- JAVA设计模式之工厂设计模式
- java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- 《java设计模式》之工厂设计模式
- JAVA设计模式之工厂模式之简单工厂模式
- JAVA设计模式之工厂模式之工厂方法模式
- JAVA设计模式之工厂模式之抽象工厂模式
- Java设计模式之工厂
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- Centos7搭建Zabbix服务
- Yii2.0-advanced-2—用户数据库配置
- 密钥对,公钥,证书,私钥,jks,keystore,truststore,cer,pfx名词说明
- 数据库实例和数据库关系
- Okhttp详解(网络)
- Java设计模式之工厂模式
- UNDERSTANDING FREE COMMAND IN LINUX/UNIX
- R语言初识
- Android init.rc分析
- Jmeter之Http Cookie Manager
- 腾讯云Centos7系统mysql server安装
- 搭建FTP服务
- 查找和排序
- CSS(三)_表格,盒子模型,边框