设计模式之二 工厂方法模式 Factory Method
来源:互联网 发布:简历采集软件 编辑:程序博客网 时间:2024/06/12 19:48
一、模式定义
定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
二、结构图
工厂方法模式结构图:
简单工厂模式结构图:
三、代码实现(计算器)
<span style="font-size:14px;">/** * 抽象运算类 */public abstract class Operation { private double numberA = 0; private double numberB = 0; public double getNumberA() { return numberA; } public void setNumberA(double numberA) { this.numberA = numberA; } public double getNumberB() { return numberB; } public void setNumberB(double numberB) { this.numberB = numberB; } //子类实现该方法 public abstract double getResult();}</span>
/* * 加法类 */public class OperationAdd extends Operation{ @Override public double getResult() { return getNumberA() + getNumberB(); }}/* * 减法类 */class OperationSub extends Operation{ @Override public double getResult() { return getNumberA() + getNumberB(); }}/* * 乘法类 */class OperationMul extends Operation{ @Override public double getResult() { return getNumberA() + getNumberB(); }}/* * 除法类 */class OperationDiv extends Operation{ @Override public double getResult() { return getNumberA() + getNumberB(); }}
/** * 抽象工厂类 */public interface IFactory { public Operation createOperation();}
/* * 加法工厂 */public class AddFactory implements IFactory{ @Override public Operation createOperation() { return new OperationAdd(); } }/* * 减法工厂 */class SunFactory implements IFactory{ @Override public Operation createOperation() { return new OperationSub(); }}/* * 乘法工厂 */class MulFactory implements IFactory{ @Override public Operation createOperation() { return new OperationMul(); }}/* * 除法工厂 */class DivFactory implements IFactory{ @Override public Operation createOperation() { return new OperationDiv(); }}
public class FactoryMethodMain { public static void main(String[] args) { //进行加法运算 IFactory factory = new AddFactory(); Operation oper = factory.createOperation(); oper.setNumberA(10); oper.setNumberB(20); double result = oper.getResult(); System.out.println(result); }}
0 0
- 设计模式之二 工厂方法模式 Factory Method
- 【设计模式】之 Factory Method 工厂方法
- 设计模式之工厂方法Factory Method
- Php设计模式之工厂模式(二)【工厂方法模式 Factory Method】
- Php设计模式之工厂模式(二)【工厂方法模式 Factory Method】
- 设计模式读书笔记之工厂方法模式(Factory method)
- 设计模式之Factory Method(工厂方法模式)
- 设计模式-创建型模式之 Factory Method(工厂方法)
- 代码设计模式之工厂方法模式(Factory Method)
- 设计模式之 - 工厂方法模式 (Factory Method design pattern)
- 设计模式之工厂方法模式(Factory Method)
- 设计模式之工厂方法模式(Factory Method)摘录
- 设计模式之工厂方法模式(Factory Method)
- JAVA设计模式之 工厂方法模式【Factory Method Pattern】
- 设计模式之(Factory method)工厂方法模式
- Java开发之设计模式--工厂方法模式(Factory Method)
- 设计模式之五:工厂方法模式(Factory Method)
- PHP设计模式之工厂方法模式(Factory Method)
- jstl fn标签
- IDEA快捷键
- CSS学习<6>
- Linux 环境变量PATH设置
- iOS开发UI篇—实现UItableview控件数据刷新
- 设计模式之二 工厂方法模式 Factory Method
- 什么是移动应用营销新趋势:Web需要SEO,App也需要ASO
- 自学cocos2d js游戏开发应该按什么步骤进行
- Android 5.0上动态布局层级覆盖问题
- Spring+Quartz实现定时任务的配置方法
- Android测试教程8--测试我们的Activity-第1篇
- Discuz X3.2云平台开通地址及方法
- Android 图片优化
- What does information_schema.TABLES.DATA_FREE mean in MySQL?