首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >好的OO设计--单例设计模式

好的OO设计--单例设计模式
EN

Stack Overflow用户
提问于 2018-03-21 06:08:36
回答 2查看 0关注 0票数 0

在设计MVC Java应用程序时,创建一个Singleton‘SystemRegistry’类来存储模型和视图类.

当我创建模型并查看对象,会执行如下操作:

代码语言:txt
复制
SystemRegistry.getInstance().setModel(model);

在我的控制器类中(它们几乎是针对不同GUI项的事件处理程序),我可以访问视图或模型,如下所示:

代码语言:txt
复制
SystemRegistry.getInstance().getView();

我永远不会在我的应用程序的模型部分使用SystemRegistry类,但有时我会使用它来访问(但很少,如果有的话,修改)来自模型的信息。

我如何设计类的另一个方面,可能是,也可能与单例无关,是使用“Manager类型”类。一个例子是我用C++创建的基于OpenGL的游戏引擎。类中存储的一些管理器是这样的:ObjectManager、RenderingManager、LightingManager、EventManager(包括输入)、HUDManager、FrameRateManager、WindowManager等等。可能还有更多的。

在每个新游戏中,我都会创建GameEngine的一个实例,作为一个类范围的变量(大部分游戏逻辑存储在一个类中),并设置不同的管理器(例如,从文件加载窗口协调或照明详细信息,设置FPS等)。要在ObjectManager中注册对象,我需要执行如下操作:

代码语言:txt
复制
Player player = new Player();
gameEngine.getObjectManager().addObject(player);

这个对象现在将存储在ObjectManager类中的一个向量中,并在GameEngine在每个框架中调用ObjectManagerDrawObjects()方法时绘制。

EN

Stack Overflow用户

发布于 2018-03-21 14:43:53

好的代码不是OOP的同义词。有时候,课堂是一种很好的工作工具。有时,它们只是把所有的事情都搞得乱七八糟,把最简单的代码片段。如果使用的是C++,则需要了解泛型编程。STL和Boost是如何利用通用编程编写代码来解决许多问题的很好的例子,这些问题都比等效的OOP代码更干净、更好、更高效。

在使用单例或DI时,许多依赖项都是不必要的。这两种工具都使得在不同模块之间传播依赖关系变得很好和容易,这就是您所要做的。然后你会得到一个设计,你的渲染器知道键盘输入,输入处理程序必须知道如何保存游戏。

DI的另一个可能的缺点是一个简单的技术问题。并非所有语言都有良好的DI库可用。有些语言使得编写健壮和通用的DI库几乎是不可能的。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档