设计模式值适配器模式
最近有些忙,双休都在加班,心情比较烦躁,写篇博客静静心。
今天扯结构型设计模式。重要的话多说几遍,程序员最重要的是编程思想,圈起来,要考试。哈哈。
说说面向对象的三大特性之一继承。继承,白话意思是最起码是那个东西。例如A是基类,B继承A,意思就是B最起码是个A.所以当A有显式构造函数时,子类必须也要有这个构造函数,因为构造函数就是说明对象是个啥。
构造函数是对象的,不是类型的。在继承链中,基类的构造函数偏重于约束作用。
又扯远了,今天说适配器模式。是一种对象功能的封装转换。又想扯了,程序员要多实践多过脑子,看书多顶多是纸上谈兵。直接上例子,我来翻译。
abstract class Player
{
protected string name;
//抽象类的构造函数起到约束作用
public Player(string name)
{
this.name = name;//this指的是当前对象
}
public abstract void Attack();
public abstract void Defense();
}
//基类继承抽象类
class Forwards : Player
{
//“实现”基类的构造约束
public Forwards(string name)
: base(name)
{
}
public override void Attack()
{
Console.WriteLine("前锋 {0} 进攻", name);
}
public override void Defense()
{
Console.WriteLine("前锋 {0} 防守", name);
}
}
//继承基类
class Center : Player
{
public Center(string name)
: base(name)
{
}
//必须重新抽象基类的方法
public override void Attack()
{
Console.WriteLine("中锋 {0} 进攻", name);
}
public override void Defense()
{
Console.WriteLine("中锋 {0} 防守", name);
}
}
//拥有基类类似的功能
class ForeignCenter
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public void 进攻()
{
Console.WriteLine("外籍中锋 {0} 进攻", name);
}
public void 防守()
{
Console.WriteLine("外籍中锋 {0} 防守", name);
}
}
//继承基类,转换其他对象的类似功能(善于工具)
class Translator : Player
{
private ForeignCenter wjzf = new ForeignCenter();
public Translator(string name)
: base(name)
{
wjzf.Name = name;
}
public override void Attack()
{
wjzf.进攻();
}
public override void Defense()
{
wjzf.防守();
}
}
Player b = new Forwards("巴蒂尔");
b.Attack();
Player m = new Guards("麦克格雷迪");
m.Attack();
//Player ym = new Center("姚明");
Player ym = new Translator("姚明");
ym.Attack();
ym.Defense();
总结:结构型设计模式重在各个对象的关系。适配器模式,主要是利用现有的对象功能实现其功能,重在转换功能。
设计模式这种东西是编程思想上的东西,与具体语言无关。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?