开发适时候,如何尽量降低耦合度呢?

zou_bk 2009-08-13 09:24:01
using System; 
using System.Collections.Generic;
using System.Text;

namespace DISimple
{
class Program
{
static void Main(string[] args)
{
InputAccept accept = new InputAccept(new PromptDataProcessor());
accept.Execute();
Console.ReadLine();
}
}

public class InputAccept
{
private IDataProcessor _dataProcessor;

public void Execute()
{
Console.Write("Please Input some words:");
string input = Console.ReadLine();
input = _dataProcessor.ProcessData(input);
Console.WriteLine(input);
}

public InputAccept(IDataProcessor dataProcessor)
{
_dataProcessor = dataProcessor;
}
}

public interface IDataProcessor
{
string ProcessData(string input);
}

public class DummyDataProcessor : IDataProcessor
{

#region IDataProcessor Members

public string ProcessData(string input)
{
return input;
}

#endregion
}

public class PromptDataProcessor : IDataProcessor
{
#region IDataProcessor Members

public string ProcessData(string input)
{
return "your input is: " + input;
}

#endregion
}
}



上述代码为转载:
注解如下:
这是一个简单且无用的例子,但却可以告诉我们为何要使用Dependency Injection,在这个例子中,必须在建立InputAccept对象时传入一 个实现IDataProcessor接口的对象,这是Interface Base Programming概念的设计模式,这样做的目的是为了降低InputAccept与实现对象间的耦合关系,重用InputAccept的执行流程,以此来增加程序的延展性。




中间说到实现IDataProcessor接口对象,是降低InputAccept与实现对象间的耦合关系,可是我没怎么看出降低了耦合关系。
各位能否帮忙解答下!
...全文
337 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hecker728 2009-08-13
  • 打赏
  • 举报
回复
中间说到实现IDataProcessor接口对象,是降低InputAccept与实现对象间的耦合关系,可是我没怎么看出降低了耦合关系。

IDataProcessor dp = null;
dp = new DummyDataProcessor();
dp = new PromptDataProcessor();

通过接口IDataProcessor 我可以传入DummyDataProcessor对象的引用
也可以传入PromptDataProcessor对象的引用,,这样就是降低了耦合。

好处是,不依赖于具体的某个对象。。如果你不使用接口而是用某具体类的话,就只能传递该类的对象

明白了么。。。

ralpha08 2009-08-13
  • 打赏
  • 举报
回复
设计模式~ 这个是个策略模式的实例
lovvver 2009-08-13
  • 打赏
  • 举报
回复
面向对象,对接口编程
zou_bk 2009-08-13
  • 打赏
  • 举报
回复
找人帮忙中

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧