Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否违反单一责任原则_C#_Oop_Windows Applications_Solid Principles_Single Responsibility Principle - Fatal编程技术网

C# 是否违反单一责任原则

C# 是否违反单一责任原则,c#,oop,windows-applications,solid-principles,single-responsibility-principle,C#,Oop,Windows Applications,Solid Principles,Single Responsibility Principle,我有一个类,它向windows窗体文本框添加了一些功能。例如,它处理textbox键关闭事件,并基于某种逻辑,如果按下“Enter”,则会显示一个特殊的网格,让用户从大量实体中选择一个实体。所以我把这个类称为“Textbox Extender”,把Textbox称为“Extended” 现在,我想让用户知道是否通过更改文本框的背景色来扩展文本框,将此功能添加到类中非常容易,但是: 我很怀疑这是违反单一责任原则的。任何想法都值得高度赞赏。这并不反对ssr。你的班级责任是扩展文本框的功能。单一责任原

我有一个类,它向windows窗体文本框添加了一些功能。例如,它处理textbox键关闭事件,并基于某种逻辑,如果按下“Enter”,则会显示一个特殊的网格,让用户从大量实体中选择一个实体。所以我把这个类称为“Textbox Extender”,把Textbox称为“Extended”

现在,我想让用户知道是否通过更改文本框的背景色来扩展文本框,将此功能添加到类中非常容易,但是:
我很怀疑这是违反单一责任原则的。任何想法都值得高度赞赏。

这并不反对ssr。你的班级责任是扩展文本框的功能。

单一责任原则说你的班级应该只满足一个目的,你的班级的目的是什么?我想说的是显示一个扩展的文本框(并获取它的数据,这是你在其他地方无法做到的),如果你的UI更改确实通知你的用户他们现在有一个扩展的文本框,那么一切都可以,没有违反SRP。无论如何,从UI对象封装UI似乎过于工程化。

但现在它有两个职责:扩展文本框、更改背景色。也许明天换字体。改天换前景色。你的想法是什么?哈!然后想想常见的文本框——它有无数的责任:处理“a”按钮按下,打印“a”字符,处理“b”按钮按下,打印“b”字符,等等。我认为在你的情况下,你可以更广泛地了解什么是责任。此外,最终你想要的是一个有效的应用程序,而不是满足所有“适当开发”规则的应用程序,但它不起作用。很好的例子。现在我确信了。谢谢。事实上,严格遵守规则使我能够开发出既能工作又能维护的应用程序。现在,工作应用程序并不难实现,但请考虑维护代码。您所说的“无论如何,从UI对象封装UI似乎过于工程化”是什么意思。extender类中没有封装任何内容。您想更改UI,现在,如果它与srp相反,这意味着您必须将它放在另一个类中。从另一个类而不是从它本身更改文本框的UI似乎是无用的工作。