设计模式-工厂方法模式

文章目录

设计模式-工厂方法模式

工厂方法模式实现计算器

首先写一个运算类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网络编程:基于Socket的服务器和客户端开发!
java·服务器·网络
再见晴天*_*3 小时前
SpringBoot 中单独一个类中运行main方法报错:找不到或无法加载主类
java·开发语言·intellij idea
Magnetic_h6 小时前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
hdsoft_huge6 小时前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
A阳俊yi7 小时前
设计模式——结构型模式
设计模式
雨白7 小时前
Java 多线程指南:从基础用法到线程安全
android·java
Hungry_Shark7 小时前
IDEA版本控制管理之使用Gitee
java·gitee·intellij-idea
赛姐在努力.7 小时前
《IDEA 突然“三无”?三秒找回消失的绿色启动键、主菜单和项目树!》
java·intellij-idea
猎板PCB黄浩7 小时前
从废料到碳减排:猎板 PCB 埋容埋阻的绿色制造革命,如何实现环保与性能双赢
java·服务器·制造
ZzzK,7 小时前
JAVA虚拟机(JVM)
java·linux·jvm