首页 / C# / c# – oop:具体情况下的组合或继承
c# – oop:具体情况下的组合或继承
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – oop:具体情况下的组合或继承,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1337字,纯文字阅读大概需要2分钟。
内容图文
![c# – oop:具体情况下的组合或继承](/upload/InfoBanner/zyjiaocheng/798/20ff96c719eb4011a8e75f0e58a59a98.jpg)
我们刚刚与大学进行过讨论,关于oop是否可以接受以下样式.
我们有一个类,它有一个公共函数,并且在构造函数中需要一个reader:
public class Converter
{
private readonly IReader _reader;
public Converter(IReader reader)
{
_reader = reader;
}
public byte[] Convert(...params...)
{
return something;
}
}
我们有Reader1和Reader2都实现了IReader.
我想设置两个管理器:Converter1和Converter2,提供相同的公共Convert()函数,但Converter1将使用Reader1,而Converter2将使用Reader2.
对我来说,最简单的解决方案是从Converter继承并用适当的阅读器初始化它:
public class Converter1 : Converter
{
public Converter1():base(new Reader1())
{}
}
public class Converter2 : Converter
{
public Converter2():base(new Reader2())
{}
}
我的大学说,Converter1和Converter2是Managers,继承不应该用于管理员,而是我们应该在这里应用一个组合.但从我的角度来看,组合只会在特定的转换器类中产生额外的代码.
那么,请问建议,是否可以在实施经理时使用继承?
谢谢
解决方法:
你为什么要继承?
根据您提供的示例,除了确保Converter1 / Converter2强制执行特定类型的阅读器之外,您不会对基类执行任何其他操作.
在我看来,你的同事是对的.你应该做的是实现一个工厂方法,它将为你创建和填充正确配置的转换器.
即
public static class ConverterFactory {
public static CreateConverter1() {
return new Converter(new Reader1());
}
public static CreateConverter2() {
return new Converter(new Reader2());
}
}
...
Converter x = ConverterFactory.CreateConverter1();
内容总结
以上是互联网集市为您收集整理的c# – oop:具体情况下的组合或继承全部内容,希望文章能够帮你解决c# – oop:具体情况下的组合或继承所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。