设计模式-工厂方法模式

文章目录

设计模式-工厂方法模式

工厂方法模式实现计算器

首先写一个运算类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();

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

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

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

相关推荐
老友@2 小时前
Java Excel 导出:EasyExcel 使用详解
java·开发语言·excel·easyexcel·excel导出
Full Stack Developme2 小时前
java.net.http 包详解
java·http·.net
daidaidaiyu3 小时前
Spring BeanPostProcessor接口
java·spring
weixin_436525073 小时前
SpringBoot 单体服务集成 Zipkin 实现链路追踪
java·spring boot·后端
她说..3 小时前
Redis实现未读消息计数
java·数据库·redis·缓存
book多得3 小时前
Redis 大 Key 问题:识别、危害与最优处理方案
java·redis·mybatis
任子菲阳4 小时前
学Java第四十三天——Map双列集合
java·开发语言
zeijiershuai4 小时前
Java 会话技术、Cookie、JWT令牌、过滤器Filter、拦截器Interceptor
java·开发语言
fury_1234 小时前
tsfile.raw提示
java·前端·javascript
q***7484 小时前
Spring Boot环境配置
java·spring boot·后端