C# - 设计模式 - 虚模式
2024-10-09 07:14:50
虚模式
问题场景
子类从抽象派生是为了解耦,但为了适应新的变化,可能需要向抽象类添加新功能,假如在添加新功能之前已经有100个子类实现了抽象,那么接下来你得在100个子类中去重写向抽象添加的新功能。
总结模式
可以使用virtual修饰符来定义新功能,virtual并不强制要求子类去实现,所以新增功能可以以这种方式定义在抽象类中并提供一个默认的实现。
示例代码
//遥控器抽象
public abstract class Remote
{
public abstract void TurnOn( );
//新功能
public virtual void SearchChannels( )
{
Console.WriteLine( "正在搜索频道" );
}
}
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( "正在搜索熊猫牌电视内置的频道" );
}
}
最新文章
- 初识MVC
- .NET entityframework for mysql ,datetime字段存储值时有误差
- SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表
- graphviz - Node Shapes
- 农村的“无为教育” (FW)
- iTween基础之Punch(摇晃)
- Markdown 测试
- VritualBox 中Debian安装tool
- 使用Spring JDBCTemplate简化JDBC的操作
- Binding 之ObjectDataProvider数据源
- MyEclipse调整项目的顺序
- 利用whoosh对mongoDB的中文文档建立全文检索
- 二维码js生成库
- Java实现将任何编码方式的txt文件以UTF-8编码方式转存
- Bugku-CTF之never give up
- 多线程之interrupt
- 【PAT】B1074 宇宙无敌加法器(20 分)
- Mac下软件包管理器-homebrew
- 牛客网数据库SQL实战(6-10)
- java重定向与请求转发的区别