高级编程--设计模式

简单工厂模式

工厂(1)--生产抽象产品
抽象产品(1)--提供实体产品 共同的特性 方法接口
实体产品(多个)--将方法具体化
客户--函数入口
/*
 简单工厂模式实现计算两个数的加减乘除
 */

/*
 实现该算法需要抽出一个抽象产品--计算器
 抽象产品的子类有四个--加法,减法,乘法和除法计算器
一个工厂--生成抽象产品--计算器
 */


using System;
//抽象产品的定义
public interface calculator {
    double GetResult(double a, double b);
}

//子类产品的定义
public class AddCalculator : calculator {
    public double GetResult(double a, double b) {
        return (a + b);
    }
}
public class SubstractCalculator : calculator {
    public double GetResult(double a, double b) {
        return (a - b);
    }
}
public class MultiplyCalculator : calculator {
    public double GetResult(double a, double b) {
        return (a * b);
    }
}
public class DivideCalculator : calculator {
    public double GetResult(double a, double b) {
        if (b != 0)
        {
            return (a / b);
        }
        else {
            return 0;
        }
    }
}
//工厂的定义
public class calfactory {
    public calculator Createcalculator(string opt) {
        switch (opt) {
            case "+":return new AddCalculator();
            case "-":return new SubstractCalculator();
            case "*":return new MultiplyCalculator();
            case "/":return new DivideCalculator();
            //default:Console.WriteLine("不存在该选项");break;    错误提示:该函数的处理并不是每个结果都符合函数返回值
            default: Console.WriteLine("不存在该选项"); return null;
        }
    }
}

public class program {
    public static void Main(string[] args) {
        double a=10, b=5, r;
        calfactory mycalfactory = new calfactory();
        calculator mycalculator = mycalfactory.Createcalculator("+");
        r = mycalculator.GetResult(a, b);
        Console.WriteLine("result:" + r);
       mycalculator = mycalfactory.Createcalculator("-");
        r = mycalculator.GetResult(a, b);
        Console.WriteLine("result:" + r);
        mycalculator = mycalfactory.Createcalculator("*");
        r = mycalculator.GetResult(a, b);
        Console.WriteLine("result:" + r);
        mycalculator = mycalfactory.Createcalculator("/");
        r = mycalculator.GetResult(a, b);
        Console.WriteLine("result:"+r);

        
    }
}

抽象工厂模式

抽象工厂--产生抽象产品
实体工厂--产生实体产品
抽象产品--客户访问产品的接口 实体产品的共同特性
实体产品--有关产品的各种方法
客户--
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值