工厂方法模式
2023-09-14 08:58:29 时间
简单工厂模式有一个问题,就是只能通过工厂代码构造特定的类型的对象。如果对象添加一个种类,那么必须修改工厂的代码。这样违背了开闭原则,因此我们讲解工厂方法模式
工厂方法模式是将工厂抽取出一个父类来,里面有一个创造对象的方法,每造一种对象写一个对应的子类工厂。这样新增子类对象就不会修改原来的代码了。
代码实现:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.zhen.build_template.factory_method; /** * @author zhen * @Date 2019/5/28 11:13 */ public interface Sender { public void send(); } package com.zhen.build_template.factory_method; /** * @author zhen * @Date 2019/5/28 11:13 */ public class MailSender implements Sender { @Override public void send() { System.out.println("this is mailSender"); } } package com.zhen.build_template.factory_method; /** * @author zhen * @Date 2019/5/28 11:14 */ public class SmsSender implements Sender { @Override public void send() { System.out.println("this is SmsSender"); } } package com.zhen.build_template.factory_method; /** * @author zhen * @Date 2019/5/28 11:32 */ public interface SendFactory { Sender getSenderInstance(); } package com.zhen.build_template.factory_method; /** * @author zhen * @Date 2019/5/28 11:33 */ public class SendMailFactory implements SendFactory { @Override public Sender getSenderInstance() { return new MailSender(); } } package com.zhen.build_template.factory_method; /** * @author zhen * @Date 2019/5/28 11:36 */ public class SendSmsFactory implements SendFactory { @Override public Sender getSenderInstance() { return new SmsSender(); } }
相关文章
- XMPP协议Asmack实现文件传输的真正解决方法
- Redis哨兵模式实现主从故障互切换的方法
- 《转》微商48种加人方法
- 6-1python语法基础-面向对象-类的定义属性和方法,类的作用域,类的封装继承多态,类的反射,单例模式
- PYTHON设计模式,创建型之工厂方法模式
- 【设计模式】模板方法模式
- 工厂方法(FactoryMethod)模式
- SAP Spartacus 在 CSR 模式下启用 SEO HTML tag 的临时方法
- SAP Spartacus服务器端渲染模式下的调试方法
- Atitit 语言的异常机制 目录 1. 异常处理,英文名为exceptional handling, 是代替日渐衰落的error code方法的新法,1 2. 三种模式1 2.1. 终止模式
- Atitit 设计模式之道 艾提拉著 sbb 目录 1. 一、设计模式的分类1 1.1. 总体来说设计模式分为三大类:1 1.2. 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建
- 实践GoF的设计模式:工厂方法模式
- 设计模式 - 模板方法模式(template method pattern) 具体解释
- 清洁代码之道:一份实用关于如何编写和维护干净整洁的好代码的的方法 The Art Of Clean Code...
- 简单工厂模式、工厂方法模式、抽象工厂模式 用图理解
- 设计模式 - 模板方法模式(template method pattern) JFrame 具体解释
- 设计模式(Python语言)----工厂方法模式
- 【设计模式】模板方法模式--让你的代码更具灵活性与可扩展性
- 第十六篇:回调方法?钩子方法?模板模式?