设计模式再次认识多态

Posted 王思琪^

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式再次认识多态相关的知识,希望对你有一定的参考价值。

目录

什么是多态?

多态的作用

多态的好处

举例


什么是多态?

不同类的对象对同一消息作出不同的响应

比如:上课铃响了,上体育课的学生跑到操场上站好,上语文课的学生在教室里坐好一样。

多态的作用

简单讲就是解耦,在详细点讲就是,多态是设计模式的基础,不能说所有的设计模式都使用到了多态,但是23种中的很大一部分,都是基于多态的。

多态的好处

1.可替换性

2.可扩充性

3.接口性

4.灵活性

5.简化性

举例

结合设计模式,第9页第10页第11页的代码,通过这样的实例,深刻理解面向对象的多态

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;
        
    

OperationAdd-加法类

class OperationAdd:Operation
    
        public override double GetResult()
        
            double result = 0;
            result = NumberA + NumberB;
            return result;
        
    

OperationSub-减法类

class OperationAdd:Operation
    
        public override double GetResult()
        
            double result = 0;
            result = NumberA + NumberB;
            return result;
        
    

OperationMul-乘法类

class OperationMul:Operation
    
        public override double GetResult()
        
            double result = 0;
            result = NumberA + NumberB;
            return result; 
        
    

OperationDiv-除法类

class OperationDiv:Operation
    
        public override double GetResult()
        
            double result = 0;
            if (NumberB==0)
            
                throw new Exception("除数不能为0.");
            
            result = NumberA + NumberB;
            return result;
        
    

OperationFactory-简单运算工厂类

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;
 
            
            return oper;
        
    

客户端代码

    Operation oper;
    oper = OperationFactory.createOperate("+");
    oper.NumberA = 1;
    oper.NumberB = 2;
    double result = oper.GetResult();
    Console.WriteLine(result);

以上是关于设计模式再次认识多态的主要内容,如果未能解决你的问题,请参考以下文章

计算机组成与设计—— 除法器

计算机原理 3.6 定点数除法

仅使用位移加法和减法的对数时间整数除法

小学二年级四则运算题

数字集成电路设计---除法运算

数字集成电路设计---除法运算