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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/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
Design patterns 最被滥用的设计示例是什么?提供更好的例子,如果你有_Design Patterns - Fatal编程技术网

Design patterns 最被滥用的设计示例是什么?提供更好的例子,如果你有

Design patterns 最被滥用的设计示例是什么?提供更好的例子,如果你有,design-patterns,Design Patterns,当给出重构示例时,我已经厌倦了看到一个数据访问层,其中连接字符串的字符串文本被IConnectionStringProvider替换 例如: 对此 public DataSet GetCustomers() { string coonectionString = connectionStringProvider.GetConnectionString(); using(SqlConnection conn = new SqlConnection(connectionString

当给出重构示例时,我已经厌倦了看到一个数据访问层,其中连接字符串的字符串文本被IConnectionStringProvider替换

例如:

对此

public DataSet GetCustomers()
{
    string coonectionString = connectionStringProvider.GetConnectionString();

    using(SqlConnection conn = new SqlConnection(connectionString))
    ...
领域驱动设计的世界中我厌倦了看到领域成为一个拥有大量订单的客户,而这些订单也有很多OrderLineItems。请用更有趣的方法解释聚合根

还是我完全失去了它,重新审视这些简单化的想法是教授这些想法的最好方式

哦,用形状来解释继承


你用什么样的例子来教授这些概念?

我记得读过OOP,其中有一辆
汽车
自行车
扩展
车辆
,所有这些都有
转向方法(或类似方法)

我记得OOP和数据库设计中的员工、经理的例子。

Duck.Quack()

OO是一种包含多个窗口对象和门对象的房屋对象,这些对象过于抽象而没有用处

是的,与车辆相关的也不太好

这里要思考的问题是“我想让阅读本文的人学到什么?”如果你试图让人们了解对象和继承,那么就用有意义的真实例子来做

因此,一个对话框对象,包含几个按钮对象和一个文本框对象,是一个更现实的想法,也不需要更复杂的理解——每个人以前都见过一个对话框。然后可以将其细化为一个通用的“窗口”对象,其中按钮、文本框和对话框都是子类


这样就可以很方便地创建一段真正的工作代码,而不是让读者的头脑中充满抽象的理论,然后看看他们是否能跳转到现实世界的概念。

对于OOP中的继承,我通常使用四边形。 将其扩展为正方形、长方形。。。
将正方形扩展成立方体,将矩形扩展成长方体…

作为一个做很多手机屏幕的人,我已经听腻了形状是正方形和圆形的基本类。在讨论类层次结构和接口时,我们需要更多的独立思考。

类工厂/Builder模式

尤其是许多关于复杂模板填充的文章,都试图将模式一劳永逸地放入代码中。我的意思是,是的,这是可以做到的,这是一个有用的模式,但它不是圣杯。这是一个创建对象的对象。有接口。和参数。等等


废话

我厌倦了看到函数式编程倡导者在Haskell、OCaml、F#、Scheme等中展示如何在一行中实现“快速排序”。他们展示的“快速排序”并不是真正的快速排序,因为它没有适当地交换元素,并且正在进行各种列表构造和垃圾收集。用函数式语言进行真正的快速排序真的很麻烦


我想知道他们还撒谎什么。

你最好把这个改成CW。你厌倦了什么?客户确实有包含行项目的订单。你经常看到这种情况的原因是因为这是一种常见的模式。这就是为什么在示例中经常使用它。我不确定你在这个例子中的问题是什么……尼尔,我只是觉得事情可能会变得更有趣一些。此外,举不同的例子可以让人们更好地找到模式。我可以选择是一个乐队有许多专辑,其中包含许多歌曲。识别不同领域的模式是一个更好的脑力练习
public DataSet GetCustomers()
{
    string coonectionString = connectionStringProvider.GetConnectionString();

    using(SqlConnection conn = new SqlConnection(connectionString))
    ...