设计模式之工厂模式
发布日期:2021-06-30 20:37:33
浏览次数:2
分类:技术文章
本文共 1710 字,大约阅读时间需要 5 分钟。
[看不懂文字描叙的,可以直接跳过看demo]
工厂模式的特点是创建出来的产品的特性是有一致性的。本文是以发送者(发送邮件,发送短信)去发送一些不同的信息,使用SenderFactroy工厂类去生产不同的发送者,再通过不同的发送者去发送信息的一个demo实例。
第一步:定义发送者接口ISender接口类
/** * 发送者的接口 */public interface ISender { /** * 发送消息 * @param msg 消息 */ void send(String msg);}
第二步:创建发送邮件EmailSender与发送短信SmsSender两个类,且都去实现ISender接口
/** * 邮件发送者 */public class EmailSender implements ISender { @Override public void send(String msg) { System.out.println("我是邮件发送者:"+msg); }}
/** * 信息发送者 */public class SmsSender implements ISender { @Override public void send(String msg) { System.out.println("我是短信发送者:"+msg); }}
第三步:构建生产的工厂类SenderFactroy类,去生产邮件与短信的发送者
/** * 1.使用反射的方式构建SenderFactroy */public class SenderFactroy { //创建发送者 public staticISender createSender(Class clz){ try { return (ISender) clz.newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; }}
/** * 2.使用传参的方式构建SenderFactroy */public class SenderFactroy2 { // 邮件发送 public static final int EMAIL_CODE = 0x01; // 短信发送 public static final int SMS_CODE = 0x02; // 空的ISender public static final ISender SENDER_NULL = new ISender() { @Override public void send(String msg) { } }; //创建发送者 public static ISender createSender(int senderCode) { switch (senderCode) { case EMAIL_CODE: return new EmailSender(); case SMS_CODE: return new SmsSender(); default: return SENDER_NULL; } }}
第四步:调用的实例的运行结果
转载地址:https://liuqiang.blog.csdn.net/article/details/79864078 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月10日 08时44分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java 解析json
2019-04-30
java http请求
2019-04-30
tensorflow 数据格式
2019-04-30
tf rnn layer
2019-04-30
tf input layer
2019-04-30
tf model create
2019-04-30
tf dense layer两种创建方式的对比和numpy实现
2019-04-30
tf initializer
2019-04-30
tf 从RNN到BERT
2019-04-30
tf keras SimpleRNN源码解析
2019-04-30
tf keras Dense源码解析
2019-04-30
tf rnn输入输出的维度和权重的维度
2019-04-30
检验是否服从同一分布
2019-04-30
tf callbacks
2019-04-30
keras、tf、numpy实现logloss对比
2019-04-30
MyBatisPlus简单入门(SpringBoot)
2019-04-30
攻防世界web进阶PHP2详解
2019-04-30
攻防世界web进阶区web2详解
2019-04-30
xss-labs详解(上)1-10
2019-04-30
xss-labs详解(下)11-20
2019-04-30