微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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种方法可以做到这一点(如果可能的话,将上面的代码转换为所有三个的例子会很好):

>服务定位器
>依赖注入
>控制反转(IoC)

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人,并使用具有更易识别名称属性.注:这不能回答你的问题,但这只是一个建议.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


原文地址:http://msdn.microsoft.com/en-us/magazine/cc163791.aspx 原文发布日期: 9/19/2005 原文已经被 Microsoft 删除了,收集过程中发现很多文章图都不全,那是因为原文的图都不全,所以特收集完整全文。 目录 前言 CLR启动程序
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采纳和使用,它的确提供了很多的优势也解决了很多的问题,但是我们也知道也并不是银弹,提供优势的同时它也给我们的开发人员和团队也带来了很多的挑战。 为了迎接或者采用这些新技术,开发团队需要更加注重一些流程或工具的使用,这样才能更好的适应这些新技术所
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下PLINQ中的分区。上一篇介绍了并行编程,这边详细介绍一下并行编程中的分区和自定义分区。 先做个假设,假设我们有一个200Mb的文本文件需要读取,怎么样才能做到最优的速度呢?对,很显然就是拆分,把文本文件拆分成很多个小文件,充分利用我们计算机中
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Microsoft为了利用这个硬件特性,于是在Visual Studio 2010 和 .NET Framework 4的发布及以上版本中,添加了并行编程这个新特性,我想它以后势必会改变我们的开发方式。 在以前或者说现在,我们在并行开发的时候可
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么
c语言怎么求字符串的长度并输出
c语言函数的三种调用方式是什么
c语言中保留两位小数怎么表示
double的输入格式符是什么