이 내가 설명하는 샘플 문제를 사용합니다 새로운 응용 프로그램 을 설계하고 때 나는 시간을 많이 직면 문제이글로벌 국가와 싱글 톤 의존성 주입
난 내가 원하는 간단한 game.so을 쓰고 생각입니다 선수 명단을 들고있다. 내가 몇 가지 옵션이 ..
일부 클래스private static ArrayList<Player> players = new ArrayList<Integer>(); public Player getPlayer(int i){ return players.get(i); }
의 정적 필드 1. 한
하지만 글로벌 상태
2.or 내가 싱글을 사용할 수 있습니다
class PlayerList{ private PlayerList instance; private PlayerList(){...} public PlayerList getInstance() { if(instance==null){ ... } return instance; } }
하지만 싱글이기 때문에이 나쁜
3.Dependency 주입
class Game { private PlayerList playerList; public Game(PlayerList list) { this.list = list; } public PlayerList getPlayerList() { return playerList; } }
이 좋은 것 같지만 게임 외부 개체 인 (PlayerList 볼 필요가있는 경우는,하지 입니다 일반적인 경우) 위의 방법 중 하나를 사용하여 Game 클래스를 전역 적으로 사용할 수있게해야합니다. 그래서 난 그냥 문제가 다른 레이어를 추가. 실제로 아무 것도 해결하지 못했습니다.
최적의 솔루션은 무엇입니까? (현재 싱글 톤 접근법 사용)
k,하지만 PlayerList 인스턴스를 다른 곳에서 사용하려면 어떻게해야합니까? – Manu
다시 삽입하십시오. Spring과 같은 프레임 워크 (자바 프로그래밍을 제공한다)를 사용하면 훨씬 쉽게 작업 할 수있다. 서비스 나 싱글 톤 자체가 아니기 때문에 플레이어리스트를 합리적으로 삽입 할 수없는 것은 일종의 팩토리에 의해 만들어지며, 플레이어리스트에는 아주 잘 삽입 될 수 있고 생성 된 객체에 전달 될 수 있습니다. 그러나 각 객체에 PlayerList를 삽입하면 결국 캡슐화와 정보 숨기기에 대한 생각이 달라집니다. –