C# 六十、设计模式:工厂模式

本文介绍了一种软件设计模式——工厂模式,并通过一个简单的计算器程序演示了如何使用该模式来封装对象的创建过程。用户可以通过输入数字和运算符,利用工厂模式创建不同的计算对象,如加法、减法、乘法和除法。

工厂模式:用于封装某些类的对象的创建

 当对应一些接口或抽象类时,可以接收子类的对象,但不能直接创建实例,而是通过创建对应的工厂类,实现操作不同子对象的创建,工厂可以根据用户的不同选择返回若干个不同类的对象。

代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test_CSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("输入第一个数字:");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("输入运算符:");
            string b = Console.ReadLine();
            Console.WriteLine("输入第二个数字:");
            int c = int.Parse(Console.ReadLine());
            Calculator calc = Factory.Count(b);
            Console.WriteLine("结果:");
            calc.Compute(a, c);

            Console.ReadKey();
        }
    }

    /// <summary>
    /// 父类:包含抽象方法——用于计算
    /// </summary>
    public abstract class Calculator
    {
        /// <summary>
        /// 抽象方法:用于计算
        /// </summary>
        /// <param name="a">计算的第一个数字</param>
        /// <param name="b">计算的第二个数字</param>
        public abstract void Compute(int a, int b);
    }

    /// <summary>
    /// 子类:加法
    /// </summary>
    public class Addition : Calculator
    {
        /// <summary>
        /// 改写计算方法用于两数相加
        /// </summary>
        public override void Compute(int a, int b)
        {
            Console.WriteLine(a + b);
        }
    }

    /// <summary>
    /// 子类:减法
    /// </summary>
    public class Subtraction : Calculator
    {
        /// <summary>
        /// 改写计算方法用于两数相减
        /// </summary>
        public override void Compute(int a, int b)
        {
            Console.WriteLine(a - b);
        }
    }

    /// <summary>
    /// 子类:乘法
    /// </summary>
    public class Multiplication : Calculator
    {
        /// <summary>
        /// 改写计算方法用于两数相乘
        /// </summary>
        public override void Compute(int a, int b)
        {
            Console.WriteLine(a * b);
        }
    }

    /// <summary>
    /// 子类:除法
    /// </summary>
    public class DivisionMethod : Calculator
    {
        /// <summary>
        /// 改写计算方法用于两数相除
        /// </summary>
        public override void Compute(int a, int b)
        {
            Console.WriteLine(a / b);
        }
    }

    /// <summary>
    /// 类:实现操作不同子对象的创建
    /// </summary>
    public class Factory
    {
        /// <summary>
        /// 方法:用于创建不同子对象
        /// </summary>
        /// <param name="name">运算符</param>
        /// <returns>子对象</returns>
        public static Calculator Count(string name)
        {
            Calculator cal = null;

            switch (name)
            {
                case "+": cal = new Addition(); break;
                case "-": cal = new Subtraction(); break;
                case "*": cal = new Multiplication(); break;
                case "/": cal = new DivisionMethod(); break;
            }
            return cal;
        }
    }    
}

--->
输入第一个数字:
9
输入运算符:
/
输入第二个数字:
3
结果:
3

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值