设计模式-工厂方法模式

文章目录

设计模式-工厂方法模式

工厂方法模式实现计算器

首先写一个运算类Operation类

java 复制代码
public class Operation{
    private double _numberA = 0;
    private double _numberB = 0;
    public double NumberA
    {
        get {return _numberA;}
        set {_numberA = value;}
    }
    public double NumberB
    {
        get {return _numberB;}
        set {_numberB = value;}
    }
    public virtual double GetResult()
    {
    	double result = 0;
        return result;
    }
}

加减乘除类

java 复制代码
class OperationAdd : Operation //加法类,继承运算类
{
    public override double GetResult(){
        double result = 0;
        result = NumberA + NumberB;
        return result;
    }
}
class OperationSub : Operation //减法类,继承运算类
{
    public override double GetResult(){
        double result = 0;
        result = NumberA - NumberB;
        return result;
    }
}
class OperationMul : Operation //乘法类,继承运算类
{
    public override double GetResult(){
        double result = 0;
        result = NumberA * NumberB;
        return result;
    }
}
class OperationDiv : Operation //除法类,继承运算类
{
    public override double GetResult(){
        double result = 0;
        if(NumberB == 0)
            throw new Exception("除数不能为0。");
        result = NumberA / NumberB;
        return result;
    }
}

先创建一个工厂接口

java 复制代码
interface IFactory
{
    Operation CreateOperation();
}

具体工厂实现这个接口

java 复制代码
class AddFactory:IFactory{
    public Operation CreateOperation(){
        return new OperationAdd();
    }
}
class SubFactory:IFactory{
    public Operation CreateOperation(){
        return new OperationSub();
    }
}
class MulFactory:IFactory{
    public Operation CreateOperation(){
        return new OperationMul();
    }
}
class DivFactory:IFactory{
    public Operation CreateOperation(){
        return new OperationDiv();
    }
}

客户端实现

java 复制代码
IFactory operFactory = new AddFactory();
Operation oper = operFactory.CreateOperation();
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();

简单工厂模式与工厂方法模式的比较

简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。

工厂方法模式,定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

相关推荐
独自破碎E4 分钟前
如何用最短替换让字符串变平衡?
java·开发语言·算法·leetcode
老华带你飞9 分钟前
宠物商城销售|基于Java+ vue宠物商城销售管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·宠物
武子康17 分钟前
Java-190 EVCache入门:Netflix 级分布式缓存架构、性能指标与多区域部署全解析
java·redis·分布式·缓存·架构·guava·guava cache
曾几何时`18 分钟前
字符串(七)409. 构造出来的最长回文串
java·前端·javascript
SadSunset31 分钟前
(9)基于xml的自动装配
java·笔记·spring
董世昌4136 分钟前
JavaScript 变量声明终极指南:var/let/const 深度解析(2025 版)
java·服务器·前端
sheji341637 分钟前
【开题答辩全过程】以 个人网站的设计与实现为例,包含答辩的问题和答案
java·eclipse
LFly_ice39 分钟前
Nest-管道
android·java·数据库
剽悍一小兔40 分钟前
为什么使用postman发送请求时不会有跨域问题?
java
Cherry的跨界思维42 分钟前
19、自动化处理双核心:Java规则引擎与Python Selenium实战全解析
java·开发语言·python·自动化·办公自动化·python办公自动化·python办公