Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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#_Design Patterns - Fatal编程技术网

C#-命名设计模式

C#-命名设计模式,c#,design-patterns,C#,Design Patterns,使用Fluent进行界面设计 如果我打这样的电话 dog.Train("Running").Train("Eating").Do("Running").Do("Eating"); 这个图案的名字是什么?它是责任链还是有任何特定的设计模式名称与之关联? 编辑: 发件人: 流畅的界面(最初由 埃里克·埃文斯和马丁·福勒)是一种方式 实现面向对象API的方法 以一种旨在提供更多 可读代码 fluent接口通常通过使用方法链接来中继后续调用的指令上下文来实现(但fluent接口需要的不仅仅是方法链

使用Fluent进行界面设计

如果我打这样的电话

 dog.Train("Running").Train("Eating").Do("Running").Do("Eating"); 
这个图案的名字是什么?它是责任链还是有任何特定的设计模式名称与之关联?

编辑:

发件人:

流畅的界面(最初由 埃里克·埃文斯和马丁·福勒)是一种方式 实现面向对象API的方法 以一种旨在提供更多 可读代码

fluent接口通常通过使用方法链接来中继后续调用的指令上下文来实现(但fluent接口需要的不仅仅是方法链接)


责任链更像是一个多类/对象级别的模式,其中消息沿着对象的层次结构传递,每个对象可以决定它是否可以处理消息或传递消息


我认为你在这里展示的模式基本上只是一个“流畅的界面”,就像你说的那样。

我不知道它是否真的是一个“模式”。它更像是一个习惯用法


无论如何,我会称之为流畅的接口,或内部领域特定的语言。

我认为它被称为“流畅的接口”,正如您在第一行中正确指出的那样。或方法链接另外,也不确定它是否符合设计模式,它看起来与jQuery使用的模式相同。虽然不知道名字。顺便说一句,对于你的例子来说,这是一个糟糕的设计。为什么Dog.Train()方法会返回Dog实例?它是同一只狗的实例还是不同的狗的实例?:-)@Franci你的问题很好。让我们暂时不谈这个问题,因为我从文章(给出了链接)中选取了一个示例,我只是想知道模式名称。:)@nettguy-这就是为什么它是一个评论,因为它与你的问题是正交的…:-)我只是想知道,Fluent接口本身是一种设计模式还是一种技术?我觉得这只是一种将方法链接的概念扩展到接口级别的方法。就是这样。我对“链接”和“可读性”之间的关系有点怀疑。我个人喜欢链接,因为它很酷,而且只生成几行代码。。。但是,当你有一个大的事件链时,它真的比一系列的操作更具可读性吗?在这些操作中,它清楚地定义了对什么执行什么操作?马克:我同意。方法链接并不总是更具可读性。我认为可读的方法链接是fluent接口风格的一部分。方法链接(如上所述)的要点是,您可以有效地使用该语言和链接的方法来实现迷你语言,方法调用取代了lexer/parser。另一种类型的方法链接(
Foo.GetBar().GetBaz().GetQux().DoSomething()
)通常被称为火车失事,几乎是灾难性的:)