E D R , A S I H C RSS

Full text search for "MazeFactory"

Maze Factory


Search BackLinks only
Display context of search results
Case-sensitive searching
  • Gof/Singleton . . . . 24 matches
         Singleton의 subclass를 선택하는 또 다른 방법은 Instance 를 Parent class에서 빼 낸뒤, (e.g, MazeFactory) subclass 에 Instance를 구현하는 것이다. 이는 C++ 프로그래머로 하여금 link-time시에 singleton의 class를 결정하도록 해준다. (e.g, 각각 다른 구현부분을 포함하는 객체화일을 linking함으로써.)
         미로를 만드는 MazeFactory 클래스를 정의했다고 하자. MazeFactory 는 미로의 각각 다른 부분들을 만드는 interface를 정의한다. subclass들은 더 특별화된 product class들의 instance들을 리턴하기 위한 opeation들을 재정의할 수 있다. 예를 들면 BombedWall 객체는 일반적인 Wall객체를 대신한다.
         여기서 SingletonPattern과 관련 되는 내용은 Maze application은 단 하나의 maze factory를 필요로 한다는 것과 그 maze factory의 인스턴스는 어디서든지 maze의 부분을 만들 수 있도록 존재해야 한다는 것이다. 이러할 때가 바로 SingletonPattern을 도입할 때이다. MazeFactory를 Singleton으로 구현함으로써, global variable에 대한 재정렬을 할 필요가 없이 maze 객체를 만들때 필요한 MazeFactory를 global하게 접근할 수 있다.
         일단 단순하게, MazeFactory의 subclassing이 필요없다고 가정하자. (잠시 후 subclassing과 관련, 대안적인 방법에 대해 고려해 볼 것이다.) C++ 에서는 static operation인 Instance와 unique instance를 참조하는 static member인 _instance 를 추가함으로서 Singleton 클래스를 구현할 수 있다. 위의 Implementation에서도 언급했듯이 반드시 생성자는 protected로 둠으로서 우발적으로 하나이상의 인스턴스가 생성되는 것을 막는다.
         class MazeFactory {
          MazeFactory ();
          static MazeFactory* _instance;
         MazeFactory* MazeFactory::_instance = 0;
         MazeFactory* MazeFactory::Instance () {
          _instance = new MazeFactory;
         자, 이제 MazeFactory의 subclassing에 대해 생각해보자. MazeFactory의 subclass가 존재할 경우, application은 반드시 사용할 singleton을 결정해야 한다. 여기서는 환경변수를 통해 maze의 종류를 선택하고, 환경변수값에 기반하여 적합한 MazeFactory subclass를 인스턴스화하는 코드를 덧붙일 것이다. Instance operation은 이러한 코드를 구현할 좋은 장소이다. 왜냐하면 Instance operation은 MazeFactory를 인스턴스하는 operation이기 때문이다.
         MazeFactory* MazeFactory::Instance () {
          _instance = new BombedMazeFactory;
          _instance = new EnchantedMazeFactory;
          _instance = new MazeFactory;
         새로운 MazeFactory의 subclass를 정의할때 매번 Instance 가 반드시 수정되어야 한다는 것에 주목하자. 이 application에서야 별다른 문제가 발생하지 않겠지만, 이러한 구현은 framework 내에 정의된 abstract factory들 내에서만 한정되어버린다. (Implementation의 subclass 관련 부분 참조)
Found 1 matching page out of 7540 total pages (5000 pages are searched)

You can also click here to search title.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
Processing time 0.3784 sec