工厂模式三部曲之工厂方法模式
工厂方法模式有四要素
- 产品接口
- 产品实现
- 工厂接口
- 工厂实现
和简单工厂模式的区别
简单工厂模式只有三个要素,它没有工厂接口,并且得到的产品方法一般是静态的。因为没有工厂接口,所以在工厂实现的扩展性方面较弱,可以算作工厂方法模式的简化版。
计算器的例子用工厂方法模式实现
类图如下:
项目如下:
代码如下:
IFactory:
public interface IFactory {public Operation createOperation(); }
AddFactory:
public class AddFactory implements IFactory {@Overridepublic Operation createOperation() {return new AddOperation();}}
SubFactory:
public class SubFactory implements IFactory {@Overridepublic Operation createOperation() {return new SubOperation();}}
MulFactory:
public class MulFactory implements IFactory {@Overridepublic Operation createOperation() {return new MulOperation();}}
DivFactory:
public class DivFactory implements IFactory {@Overridepublic Operation createOperation() {return new DivOperation();}}
剩下的类和简单工厂模式的一样。
可以参考:http://www.cnblogs.com/DarrenChan/p/5661356.html
测试:
IFactory fac = new DivFactory(); Operation oper = fac.createOperation(); oper.setNumber1(3.3); oper.setNumber2(5.12); System.out.println(oper.getResult());
转载于:https://www.cnblogs.com/DarrenChan/p/5661426.html
工厂模式三部曲之工厂方法模式相关推荐
- 设计模式(二 三)工厂模式:1-简单工厂模式
模拟场景: 需要构造一个运算器(Operation),分别负责加减乘除的运算功能. 思想: 这里需要构造四个 Operation,可以使用 Factory 去统一创建这四个对象. 所需要构造的对象是运 ...
- 设计模式——模版方法模式详解(论沉迷LOL对学生的危害)
0. 前言 写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦 ...
- 详解设计模式:模版方法模式
模板方法模式(Template Method Pattern)也被称为模板模式(Template Pattern),是在 GoF 23 种设计模式中定义了的行为型模式. 模板方法模式 定义一个操作中的 ...
- 工厂模式三部曲之二_工厂模式
自<工厂模式三部曲之一_简单工厂模式>之后,貌似已经很久没有继续这个三部曲了,所以抽点时间把后两篇给补上吧.首先回顾下简单工厂模式的主要内容:简单工厂模式就是实质就是专门定义了一个工厂类, ...
- 工厂模式三部曲之一_简单工厂模式
这段时间想要好好了解下工厂模式,从而在园中看了很多博友的关于工厂模式的博客, 受益匪浅......同时也感谢各位博友对知识的无私的分享....知识在于积累,但个人觉得积累知识的最好方式是当自己学懂了某 ...
- 设计模式-工厂模式三部曲
设计模式-工厂模式三部曲(转) 转自:http://www.cnblogs.com/holyknight-zld/category/402079.html 工厂模式三部曲之一_简单工厂模式 转自:ht ...
- 设计模式 之美 -- 工厂方法模式
文章目录 1. 解决问题 2. 应用场景 3. 实现如下 C++实现 C语言实现 4. 缺点 1. 解决问题 在简单工厂模式中,我们使用卖衣服进行举例,同一种工厂可以卖很多不同种类的衣服,工厂只是将衣 ...
- 工厂方法模式和抽象工厂模式
工厂方法模式和抽象工厂模式 工厂方法模式 抽象工厂模式 总结: 工厂方法模式 #include <string> #include <iostream>// Abstract ...
- 工厂方法模式与抽象工厂模式的区别
工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类. 一个抽象工厂类,可以派生出多个具体工厂类. 每个具体工厂类只能创建一个具体产品类的实例. 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以 ...
最新文章
- Python打包程序
- 没有安装提供程序“System.Data.SqlServerCe.3.5”的解决方法
- CSDN Blog V3.0.0.2升级公告
- webservice服务器端获取request对象的三种方式
- 《STL源码剖析》学习--6章--_rotate算法分析
- 牛客多校1 - Infinite Tree(虚树+换根dp+树状数组)
- numpy创建zeros数组时报错TypeError: Cannot interpret ‘8‘ as a data type
- rust加载不进去服务器eac_基于腾讯云的 Rust 和 WebAssembly 函数即服务
- 送你一个在线机器学习网站,真香!
- cdp备份mysql数据库_数据库如何备份与恢复
- 浅谈 HTTPS 和 SSL/TLS 协议的背景与基础
- JavaScript之jQuery够用即可(jQuery的引入、查找选择器、左侧菜单栏)
- Android:Android Studio生成签名文件,自动签名,以及获取SHA1和MD5值
- 值得收藏的微软Windows系统蓝屏代码大全以及修复方法
- Libre 6008 「网络流 24 题」餐巾计划 (网络流,最小费用最大流)
- (转)wuauclt.exe病毒解决方案
- 360打开html加载不出来,360浏览器显示正在解析主机打不开网页如何处理
- Java基础之二维数组
- 使用Arduino开发ESP32:关于esp32 wifi连接不上的解决办法
- AAAI 2019 论文解读:卷积神经网络继续进步
热门文章
- AcWing 4244. 牛的比赛(双向建图BFS)
- 如何利用webpack4.0搭建一个vue项目
- 3.8Python数据处理篇之Numpy系列(八)---Numpy的梯度函数
- bootstrap-面板
- 如何在思科虚拟PC机信息进行修改
- I.MX6 ifconfig: SIOCSIFHWADDR: Cannot assign requested address
- NSNotificationCenter详解
- [转]分析MySQL数据类型的长度【mysql数据字段 中length和decimals的作用!熟悉mysql必看】...
- Maclean写的Oracle入门书
- silverlight小结