什么是最常被使用的设计示例?如果有更好的示例,请提供。 (请注意,这是一个问题标题,不需要回答。)

3
给出重构的示例时,我已经厌倦了看到使用字符串字面量作为连接字符串的数据访问层被替换为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))
    ...

在领域驱动设计中,我已经厌倦了看到领域被描述成一个有许多订单和订单行项目的客户。请使用更有趣的内容来解释聚合根。
或者是我完全迷失了方向,重新阐述这些简单的概念是最好的教学方法吗?
哦,使用形状来解释继承...
您用什么样的例子来教授这些概念?

你最好把这个改成 CW。 - Toon Krijthe
你累了吗?一个客户确实有具有行项目的订单。你看到这种情况很常见,因为这是一种常见模式。这就是为什么它经常用于示例中的原因。不确定你对该示例有何问题... - Neil Barnwell
尼尔,我认为事情可以更加有趣。此外,提供不同的例子可以让人们更好地找到模式。我的另一个想法是乐队拥有许多专辑,每个专辑包含许多歌曲。在不同领域中识别模式是更好的大脑锻炼,我个人认为。 - Scott Muc
8个回答

3
我厌倦了看到函数式编程的支持者展示如何在Haskell、OCaml、F#、Scheme等语言中用一行代码实现“快速排序”。他们展示的“快速排序”实际上并不是真正的快速排序,因为它没有原地交换元素,而是进行各种列表构造和垃圾收集。在函数式语言中做一个真正的快速排序真的很混乱。
让我想知道他们还撒了多少谎。

2

作为经常进行电话面试的人,我已经厌倦了听到形状是正方形和圆形的基类的说法。在讨论类层次结构和接口时,我们需要更多的独立思考。


1

我记得阅读过有关面向对象编程的文章,其中举了一个以汽车自行车继承交通工具的例子,它们都有一个steer()方法(或类似的方法)


1

拥有一个包含多个窗口对象和一个门对象的房屋对象的面向对象编程思想过于抽象,不太实用。

而与车辆相关的那个也不是很好。

在这里需要考虑的问题是,“我希望读者通过阅读这篇文章学到什么?”如果你想让人们学习对象和继承,那么就使用真实的例子来讲解,让人们更容易理解。

因此,一个对话框对象,包含多个按钮对象和一个文本框对象,是一个更现实的想法,而且并不复杂 - 每个人都见过对话框。然后可以将其细化为一个通用的“窗口”对象,其中按钮、文本框和对话框是子类。

这将方便地引导我们创建一个真正可行的代码,而不是让读者充满抽象理论,然后看他们是否能够将其应用到现实世界的概念中。


1

类工厂/建造者模式。

特别是关于将该模式一劳永逸地转化为代码的许多关于复杂模板的文章。我的意思是,是的,它可以完成,它是一个有用的模式,但它不是圣杯。它只是创建对象的对象。带有接口。和参数。等等。

呕。


0

我记得面向对象编程和数据库设计中的员工和经理示例。


0

Duck.Quack();


你别碰DuckSimulator :p - Pondidum

0

对于面向对象编程中的继承,我通常会选择四边形。 将其扩展以制作正方形、矩形等等。 将正方形扩展为立方体,将矩形扩展为长方体等等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接