首页 > 其他 > 详细

C#简单工厂模式

时间:2014-03-25 22:15:28      阅读:449      评论:0      收藏:0      [点我收藏+]

    刚刚开始设计模式,有了视频的基础,写代码相对容易一些,大话设计的第一章,首先就是代码规范,不论是以前学习VB还是准备考试的C++,到现在的C#,还有以后的Java等等,代码规范都是很重要的,所以从现在养成一个好习惯,规范自己的代码,培养专业素质。

    跟着大鸟和小菜一步一步学习,学习了第一个模式——简单工厂模式

    我们知道,简单工厂模式是类的创建模式,根据提供给它的数据返回几个可能类中的一个类的实例。

    优点:工程类中包含了必要地逻辑判断,根据客户端的选择条件动态实例化相关的类,对客户端来说,去除了与具体产品的依赖。

bubuko.com,布布扣

如下例子,是一个关于加减乘除运算的简单工厂模式。结构图如下:

bubuko.com,布布扣

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

namespace 简单工厂模式算法
{
    class Program
    {
        //客户端代码
        static void Main(string[] args)
        {
            Operation oper;
            oper = OperationFactory.createOperate("+");//
            oper.NumberA = 1;
            oper.NumberB = 2;
            double result = oper.GetResult();
            Console.WriteLine("结果是:" + result);
        }
        //Operation运算类
        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;
            }
        }
        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)               //考虑除法的除数为0时没有意义
                    throw new Exception("除法不能为0");
                result = NumberA / NumberB;
                return result;
            }
        }//简单运算工厂类
    
        public class OperationFactory            //定义OperationFactory(运算符工厂)
        {
            public static Operation createOperate(string operate)
            {
                 Operation oper = null;
                 switch (operate)
                {
                     case "+":
                         oper = new OperationAdd();
                         break;
                     case "-":
                         oper = new OperationSub();
                         break;
                     case "*":
                          oper = new OperationMul();
                          break;
                     case "/":
                          oper = new OperationDiv();
                          break;
                 }
                return oper;
            }
        }
    }
}
         感觉和他差不多的是工厂模式,它定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的。

       和简单工厂对比来说,它的内部逻辑判断移到了客户端代码来进行,想要加功能,本来说该工厂类的,现在是修改客户端。

       后续介绍工厂模式,根据与简单工厂模式的不同点和相同的,结合各自的优缺少点继续学习,待补充。



C#简单工厂模式,布布扣,bubuko.com

C#简单工厂模式

原文:http://blog.csdn.net/u010785685/article/details/22049915

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!