Man*_*anu 9 singleton dependency-injection global-variables
这是我在设计新应用时遇到的很多问题.我将用一个示例问题来解释这一点.
我正在写简单的游戏,所以我想要一个玩家列表.我的选择很少......
Run Code Online (Sandbox Code Playgroud)private static ArrayList<Player> players = new ArrayList<Integer>(); public Player getPlayer(int i){ return players.get(i); }
但这是一个全球化的国家
Run Code Online (Sandbox Code Playgroud)class PlayerList{ private PlayerList instance; private PlayerList(){...} public PlayerList getInstance() { if(instance==null){ ... } return instance; } }
但这很糟糕,因为它是一个单身人士
Run Code Online (Sandbox Code Playgroud)class Game { private PlayerList playerList; public Game(PlayerList list) { this.list = list; } public PlayerList getPlayerList() { return playerList; } }
这似乎很好,但事实并非如此.
如果Game之外的任何对象需要查看PlayerList(这是通常的情况),
我必须使用上述方法之一来使Game类全局可用.所以我只是为问题添加了另一层.我实际上没有解决任何问题.
什么是最佳解决方案?(目前我使用Singleton方法)
依赖注入背后的想法正如名称所示,注入依赖项。因此,任何需要了解玩家列表的对象都将被注入。通常,在切换到依赖项查找或其他机制之前,尽可能广泛地使用依赖项注入是很有意义的。这也使得以后可以扩展游戏,为不同级别或任何您可能想到的扩展提供不同的玩家列表。
| 归档时间: |
|
| 查看次数: |
1720 次 |
| 最近记录: |