呵呵,很早前就想动起手来看大话设计模式了,放在电脑里已经很久了,就在这些天终于双击打开它.
目前一路看来,感觉只是些皮毛的,感觉这本书不好,没有什么例子,只是大概讲讲,这样很容易忘,
所以现在弄个贴,就当记记笔记,
呵呵,
1:简单工厂模式.
using System;
using System.Collections.Generic;
using System.Text;namespace Operation
{
    /// <summary>
    /// 运算类
    /// </summary>
    public class Operation
    {
        private double _numberA = 0;
        private double _numberB = 0;
        
        /// <summary>
        /// 数字A
        /// </summary>
        public double NumberA
        {
            get
            {
                return _numberA;
            }
            set
            {
                _numberA = value;
            }
        }        /// <summary>
        /// 数字B
        /// </summary>
        public double NumberB
        {
            get
            {
                return _numberB;
            }
            set
            {
                _numberB = value;
            }
        }        /// <summary>
        /// 得到运算结果
        /// </summary>
        /// <returns></returns>
        public virtual double getResult()
        {
            double result = 0; 
            return result;
        }       
    }    /// <summary>
    /// 加法类
    /// </summary>
    class OperationAdd : Operation
    {
        public override double getResult()
        {
            double result = 0; 
            result = NumberA + NumberB;
            return result;
        }
    }    /// <summary>
    /// 减法类
    /// </summary>
    class OperationSub : Operation
    {
       public override double getResult()
        {
            double result = 0;
            result = NumberA - NumberB;
            return result;
        }
    }    /// <summary>
    /// 乘法类
    /// </summary>
    class OperationMul : Operation
    {
        public override double getResult()
        {
            double result = 0;
            result = NumberA * NumberB;
            return result;
        }
    }    /// <summary>
    /// 除法类
    /// </summary>
    class OperationDiv : Operation
    {
        public override double getResult()
        {
            double result = 0;
            if (NumberB==0)
                throw new Exception("除数不能为0。");
            result = NumberA / NumberB;
            return result;
        }
    }    /// <summary>
    /// 平方类
    /// </summary>
    class OperationSqr : Operation
    {
        public override double getResult()
        {
            double result = 0;
            result = NumberB * NumberB;
            return result;
        }
    }    /// <summary>
    /// 平方根类
    /// </summary>
    class OperationSqrt : Operation
    {
        public override double getResult()
        {
            double result = 0;
            if (NumberB < 0)
                throw new Exception("负数不能开平方根。");
            result = Math.Sqrt(NumberB);
            return result;
        }
    }    /// <summary>
    /// 相反数类
    /// </summary>
    class OperationReverse : Operation
    {
        public override double getResult()
        {
            double result = 0;
            result = -NumberB;
            return result;
        }
    }    /// <summary>
    /// 运算类工厂
    /// </summary>
    class 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;
                    }
                case "sqr":
                    {
                        oper = new OperationSqr();
                        break;
                    }
                case "sqrt":
                    {
                        oper = new OperationSqrt();
                        break;
                    }
                case "+/-":
                    {
                        oper = new OperationReverse();
                        break;
                    }
            }            return oper;
        }
    }}2:策略模式,(嘿嘿,代码就不贴了.)3:单一职责模式(一个东西实现一种功能就好,就像一人拥有一个女朋友就好,)
4:开放封闭模式.
5:依赖倒转模式
6:装饰模式(目前在看,无聊中哪.)
以后有时间再看看把笔记贴上来啊,呵呵.
大家要有些什么好的学习方法可以说说,谢谢了
PS:我想找到一个软件开发的工作啊,要是谁有,可以介绍下哦,西西.

解决方案 »

  1.   

    7:代理模式(成为别人的嫁纱)
    代理模式的主要用途如WEBSERVIVE,
    像远程调用会用到.
      

  2.   

    看到楼主的贴子又学习了要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。
    不能重写非虚方法或静态方法。重写的基方法必须是 virtual、abstract 或 override 的。
    override 方法提供从基类继承的成员的新实现。通过 override 声明重写的方法称为重写基方法。重写的基方法必须与 override 方法具有相同的签名。