c# – 减少初学者所需的耦合简单示例
刚刚大学毕业,我遇到了一些需要减少耦合的代码.但我并不完全理解所有概念,并想要一个简单的例子来帮助我.为了让你开始,我有一个人类,一个字段,名称.我在该类中有一个方法来连接一些文本.
我知道这是一个愚蠢的例子,大多数人都不会考虑在这种简单的情况下减少耦合,但我只想要一个简单的例子来帮助我完全理解代码和概念. 在主窗口后面的代码中,我放了一个文本框和一个按钮.窗口加载时,它显示person x name字段的当前值.单击该按钮时,将调用x.PersonAddText方法.目前,此示例的耦合计算为8.按钮单击事件为3,窗口加载事件为3. 有没有办法,使用这个例子,我们可以将它们降低到低于它们中的一个或两个. 以下是我的所有代码: 我的人员类: public class Person { //Fields private string name; //Properties public string Name { get { return name; } set { name = value; } } //Constructors public Person() { name = "joe"; } //Methods public string PersonAddText(string text) { return name += " - " + text; } //Interfaces (or additional code below here please to aid understanding) } 我的守则背后: Person x = new Person(); public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender,RoutedEventArgs e) { txtname.Text = x.Name; } private void button1_Click(object sender,RoutedEventArgs e) { txtname.Text = x.PersonAddText(txtname.Text); txtname.Text = x.Name; } 我的简单XAML: <Grid> <TextBox Name="txtname" Margin="12,12,0" Height="23" VerticalAlignment="Top" /> <Button Content="Add Text" Margin="12,41,0" Name="button1" VerticalAlignment="Top" Click="button1_Click" /> </Grid> 我很难理解互联网上的教程解释这一点.从我看到有3种方法可以做到这一点(如果可能的话,将上面的代码转换为所有三个的例子会很好): >服务定位器 article解释我读过的东西非常好,但这些例子与我无关,因为他使用VB和ASP.Net与数据库连接字符串.这与我的需求完全相反,我不想考虑如何翻译代码,同时学习概念,并思考如何将其应用于相关的东西.虽然这个例子很好,但它太多了,我真的很感激任何额外的帮助. 编辑历史记录:更正拼写.添加以下内容以澄清我的问题: 我理解耦合和衔接背后的理论,以及为什么你应该减少一个并增加另一个.但我们从来没有在大学里编写任何代码.此外,虽然大学没有涉及,但我确实理解界面.但是,我不明白如何使用它们来减少耦合. 添加了the article I refrenced above的链接. 编辑2:到目前为止,我现在得到的是以下内容: public interface IPerson { string Name { get; set; } string PersonAddText(string text); } public class Person : IPerson { //The code from the person class above } 我现在如何在主窗口代码中使用它?我猜我应该更换 Person x = new Person(); 同 IPerson x = new Person(); 这是正确的,如果是的话,还有什么我需要做的.我问的原因是因为我仍然没有看到visual studio报告的代码耦合数据有任何减少(事实上,它在后面的主窗口代码上增加了1). 解决方法
编辑
我很高兴我的回答有点帮助,让我稍微更新一下.要将您的问题用作直接答案,您需要更改的是您的字段声明: Person x = new Person(); 至 IPerson x = new Person(); 您的代码隐藏现在知道您的界面中指定的属性和方法,并且耦合程度要低得多,因为您可以在以后为新的Student()替换新的Person().只要对象实现了接口.您的代码隐藏现在应该无需任何必要的更改即可运行. 边注 我建议考虑延迟加载x人,并使用具有更易识别名称的属性.注:这不能回答你的问题,但这只是一个建议. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – 使用地址城市和州进行地理编码
- c# – 检查进度条是否已填满
- dojo.Deferred
- 从oracle表中恢复已删除的行
- [读书笔记]C#学习笔记二: 委托和事件的用法及不同.
- ruby-on-rails – 如何让devise_async与Cucumber一起使用?
- PostgreSQL根据某字段取平均值后插入另外字段实现一例
- Ruby-on-Rails:ActiveAdmin SuperClass Mismatch TypeErro
- ruby-on-rails – EventMachine和Ruby Threads – 这里到底
- xml方式---spring的AOP拦截用户操作