zoukankan      html  css  js  c++  java
  • C#

    虚模式

    问题场景

    子类从抽象派生是为了解耦,但为了适应新的变化,可能需要向抽象类添加新功能,假如在添加新功能之前已经有100个子类实现了抽象,那么接下来你得在100个子类中去重写向抽象添加的新功能。

    总结模式

     可以使用virtual修饰符来定义新功能,virtual并不强制要求子类去实现,所以新增功能可以以这种方式定义在抽象类中并提供一个默认的实现。

    示例代码

    //遥控器抽象
    public abstract class Remote
    {
        public abstract void TurnOn( );
        //新功能
        public virtual void SearchChannels( )
        {
            Console.WriteLine( "正在搜索频道" );
        }
    }

    //我可以不重写新增功能,用默认的实现就好了
    public class PanasonicRemote : Remote
    {
        public override void TurnOn( )
        {
            Console.WriteLine( "正在关闭松下电视" );
        }
    }

    //我得重写新功能,以便符合我的要求
    public class PandaRemote : Remote
    {
        public override void TurnOn( )
        {
            Console.WriteLine( "正在关闭熊猫电视" );
        }

        public override void SearchChannels( )
        {
            Console.WriteLine( "正在搜索熊猫牌电视内置的频道" );
        }
    }

    C# - 设计模式目录

  • 相关阅读:
    关于C的struct结构的几个常见疑问。
    NAT类型
    Linux oops stack 分析
    关于pci_dev的定义
    还是动态添加控件 触发事件
    页面编译模型
    MDX 销售额与上月比较
    C语言的词法语法分析lex&yacc 经典收藏
    interrupt storm
    js获取mac地址
  • 原文地址:https://www.cnblogs.com/myrocknroll/p/8600979.html
Copyright © 2011-2022 走看看