我应该在控制台游戏中使用单例吗?

时间:2018-10-06 08:39:57

标签: python python-3.x

我第一次用python写游戏-控制台游戏。我到达必须决定是否应该使用单例的地步。

情况:

我有像(例如)字符类。如果您开始新游戏,则开始创建角色(命名您的角色,...)

创建角色后,我从角色类# Stage 1 FROM node:8 as react-build WORKDIR /builddir COPY . ./ RUN yarn RUN yarn build # Stage 2 - the production environment FROM nginx:alpine COPY nginx.conf /etc/nginx/conf.d/default.conf COPY --from=react-build /builddir/build /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] )创建对象

问题:

以后我在其他函数/类中需要字符obj时(例如,将其保存到json文件中),必须访问最初创建的对象。 我永远不需要多个玩家对象

现在,我想知道是否应该使用单例,还是应该始终将对象传递到需要它的地方。另一种选择是将变量存储在模块中,如果需要获取数据,则导入模块。

那你怎么看?

1 个答案:

答案 0 :(得分:2)

来自Python的禅宗

  

简单胜于复杂。

只有一个玩家对象的一种方法是创建某种强制限制多个玩家的单例模式。实现相同目标的一种更简单的方法是不实例化第二个玩家。

如果您出于任何原因(例如,从多个位置访问同一字符)都想强制使用单例模式,则模块是实现该效果的最佳途径。语法易于使用,可以从整个项目轻松访问模块,并且模块语义已经内置了任何必要的单例机制。