什么是最常用的设计实例?如果你有它们,请提供更好的例子

时间:2009-02-17 08:31:35

标签: design-patterns

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

例如:

public DataSet GetCustomers()
{
    string connectionString = "SQLClient;Blah;Blah";

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

到这个

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

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

域驱动设计世界中,我已经厌倦了将域视为客户,其中有许多订单,其中还有很多< EM> OrderLineItems 。请使用更有趣的东西解释聚合根

或者我完全失去它并重复这些简单化是教导这些想法的最佳方式?

噢,用形状来解释继承......

您使用哪些示例来教授这些概念?

8 个答案:

答案 0 :(得分:3)

我已经厌倦了看到功能编程倡导者展示如何在Haskell,OCaml,F#,Scheme等中的一行中实现“快速排序”。他们展示的“快速排序”不是真正的Quicksort,因为它是没有交换元素,并正在进行各种列表构建和垃圾收集。用功能语言做一个真正的Quicksort非常麻烦。

让我想知道他们还在说什么。

答案 1 :(得分:2)

作为一个做了很多电话屏幕的人,我厌倦了听说Shape是Square和Circle的基类。在讨论类层次结构和接口时,我们需要一些更独立的思想。

答案 2 :(得分:1)

我记得通过CarBicycle扩展Vehicle的示例阅读OOP,所有示例都有steer() - 方法(或类似的东西)

答案 3 :(得分:1)

OO拥有一个House对象,其中包含多个Window对象和一个太抽象的Door对象,无法使用。

是的车辆相关车辆也不是那么好。

这里要思考的问题是“我希望阅读此内容的人学习?”如果你试图让人们了解对象和继承,那么使用有意义的真实例子来做。

所以一个对话框对象,包含几个按钮对象和一个文本框对象是一个更加现实的想法,并没有更复杂的理解 - 每个人都看到过一个对话框。然后可以将其细化为通用的“窗口”对象,其中按钮,文本框和对话框是子类。

然后,这将方便地创建一个真实的,有效的代码片段,而不是用抽象的理论填充读者的头脑,然后看看他们是否可以使心理跳跃到现实世界的概念。

答案 4 :(得分:1)

班级工厂/建筑师模式。

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

Blargh。

答案 5 :(得分:0)

我记得OOP和数据库设计中的Employee,Manager示例。

答案 6 :(得分:0)

Duck.Quack();

答案 7 :(得分:0)

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