相关疑难解决方法(0)

单身人士有什么不好的?

单例模式是一个缴足成员四人帮模式书,但最近似乎而是由开发者世界孤立.我仍然使用相当多的单例,特别是对于工厂类,虽然你必须对多线程问题(实际上是任何类)有点小心,但我不明白为什么它们如此可怕.

Stack Overflow特别假设每个人都同意Singletons是邪恶的.为什么?

请用" 事实,参考或特定专业知识 " 支持您的答案

singleton design-patterns

1931
推荐指数
30
解决办法
48万
查看次数

Liskov替代原则的例子是什么?

我听说Liskov替换原则(LSP)是面向对象设计的基本原则.它是什么以及它的使用例子是什么?

oop liskov-substitution-principle definition design-principles solid-principles

845
推荐指数
24
解决办法
29万
查看次数

我应该如何重构我的代码以删除不必要的单身?

当我第一次看到反单身评论时,我很困惑.我在最近的一些项目中使用了单例模式,并且它运行得很漂亮.事实上,我已经使用了很多次.

现在,在遇到一些问题之后,阅读这个问题,尤其是这篇博文,我理解了我带给世界的邪恶.

那么:我如何从现有代码中删除单例?

例如:
在零售店管理程序中,我使用了MVC模式.我的Model对象描述了商店,用户界面是View,我有一组控制器,它们充当两者之间的联络.大.除了我将Store变成一个单独的(因为应用程序一次只管理一个商店),我还把我的大部分Controller类变成了单例(一个mainWindow,一个menuBar,一个productEditor ......).现在,我的大多数Controller类都可以像这样访问其他单例:

Store managedStore = Store::getInstance();
managedStore.doSomething();
managedStore.doSomethingElse();
//etc.
Run Code Online (Sandbox Code Playgroud)

我应该改为:

  1. 创建每个对象的一个​​实例,并将引用传递给需要访问它们的每个对象?
  2. 使用全局?
  3. 别的什么?

Globals仍然很糟糕,但至少他们不会假装.

我看到#1迅速导致可怕的膨胀构造函数调用:

someVar = SomeControllerClass(managedStore, menuBar, editor, sasquatch, ...)
Run Code Online (Sandbox Code Playgroud)

还有其他人经历过这个吗?如果不是全局变量或单个变量,那么为多个单独的类访问公共变量的OO方法是什么?

language-agnostic singleton refactoring

20
推荐指数
1
解决办法
5635
查看次数

面向对象编程 - 类设计混乱

我试图围绕面向对象的编程.

我的理解是我们有对象,所以我们可以设计我们的程序来镜像现实生活中的对象.

我们来看一个类层次结构:

class Fruit {
    void Eat() {

    }
}

class Apple extends Fruit {

}
Run Code Online (Sandbox Code Playgroud)

显然,如果Eat()是虚拟的,你可以多态地使用Fruit .但这有意义吗?水果不能自己吃!

水果对象应该传递给具有Eat()功能的人体物体吗?

我试图弄清楚正确的思考方式.一般来说,编程对象应该如何接近现实生活中的对象?

oop class-design

11
推荐指数
3
解决办法
3420
查看次数

您认为最滥用的设计模式是什么?

使用Java和Java框架当我遇到抽象工厂模式时,我已经开始颤抖了.在我看来,这是最滥用的设计模式.并非所有框架都滥用它,但有很多框架滥用它.它不适合所有模型,几乎100%的时间你都会做同样的事情为什么抽象它?

您认为哪种设计模式是最滥用的设计模式?一个开发人员使用它但它不能很好地适应问题的地方.一个金锤子和一切看起来像钉子的情况.那么,当你在野外遇到它时,哪种设计模式会让你不寒而栗?

编辑:想到了Singleton.但是在最过度使用的问题上出现了这种情况.我要求最受虐待的人.(或者使用不当).

design-patterns

3
推荐指数
1
解决办法
840
查看次数

什么是最未充分利用或未被充分认可的设计模式?

我最近一直在阅读很多关于设计模式的内容,其中一些可以让我们的生活变得更加轻松,其中一些似乎只会让事情复杂化(至少对我来说是这样).我很想知道每个人都认为什么样的设计模式被淹没或被低估了.有些模式很简单,许多人甚至没有意识到他们正在使用模式(装饰器可能是最常用的,没有实现).我的目标是给我们模式新手一些更复杂或未知的模式以及为什么要使用它们.

design-patterns

3
推荐指数
2
解决办法
756
查看次数