2009-11-04 6 views
3

네트워크 박하 사탕 발가락 게임의 가장/가장 유리한 디자인 패턴이 무엇이 될지에 대해 귀하의 생각과 조언을 얻을 수 있는지 궁금합니다.박하 사탕 발가락 디자인 패턴

저는 Factory, Abstract Factory, Singleton, Prototype 및 Builder와 같은 디자인 패턴을 살펴 보았습니다.

사용하는 것이 가장 좋으며, 그 이유는 무엇입니까?

지금 내 Tic Tac Toe 게임은 소켓을 통해 인터넷을 통해 재생할 수있는 스레드 클라이언트/서버 게임입니다. 그러나 디자인 패턴을 사용하기 위해 게임을 리팩터링하려고합니다.

나는 그런 박하 사탕 발가락으로 게임의 다양한 종류, 재생에 사용할 수있는 클라이언트/서버 아키텍처를 설정하는 방법에 대한 생각, (5), 등 ...

내가 어떤 방향으로 가야 연결? 디자인 패턴에 대한 경험을 실제로 얻을 수있는 방향으로 가고 싶습니다 ...

감사합니다!

답변

16

경고 : 사람들이 "디자인 패턴"을 목표로 사용할 때 싫습니다. 좋은 코드를 디자인하십시오. 그리고 DP와 비슷한 것처럼 보이면 DP를 사용하여 코드를 개선하십시오. 그러나 "나는 Striking Crane Pattern을 사용하여 프로그램을 작성하고 싶다"는 말을 시작하지 마십시오. 그것은 말 앞에 카트를 넣고 있습니다. DP가 설계에서 나옵니다. 그들은 디자인을 운전해서는 안됩니다.

endcaveat

이미 디자인 패턴을 사용하고 있습니다. DP는 프로그래밍에서 일반적으로 사용되는 "패턴"에 대한 전문 용어 일뿐입니다. 처음에 자신에게 묻는 것은 "내가 작성한 네트워크 게임의 디자인 패턴을 어떻게 인식 할 수 있습니까?"입니다.

이후에는 앞으로 나아갈 수 있습니다. 여러 게임을 가지려면 아마도 게임을 처리하기 위해 추상 팩토리 패턴을 사용하고 싶을 것입니다. 서버는 팩토리를 호출하여 선택한 게임을 수행하는 방법을 알고있는 게임 객체를 가져옵니다.

+3

+1 "Striking Crane"패턴. 말하자면, "Shaolin Monkey"패턴은 대부분의 경우에 더 좋습니다. – ThisSuitIsBlackNot

2

다른 이유로 다른 패턴이 사용됩니다. 종종 하나의 응용 프로그램에서 여러 디자인 패턴이 사용되는 것을 보게 될 것입니다. 올바른 작업에 적합한 패턴을 사용하는 경우입니다.

예를 들어 하나의 웹 앱에서 설정 클래스와 데이터베이스 연결을위한 팩토리 클래스에 대해 싱글 톤 패턴을 사용할 수 있습니다. 싱글 톤은 셋팅 객체만을 가지고 있고 팩토리 클래스는 내 환경에 맞는 데이터베이스 어댑터를 넘겨 준다.

+1

또한 경적을 디자인 패턴에 넣기 위해 노력하는 것이 일반적으로 좋은 아이디어는 아닙니다. –

+0

그러나 현대 기업가가 어떻게 코드를 작성 했습니까? – Pod

2

이름을 나타내는 패턴은 아키텍처 패턴이 아니지만 스트레치로 빌더 패턴은 일반 인프라를 사용하여 다른 게임을 제공하는 멀티 게임 서버에 적합 할 수 있습니다. 여기에 (추상적 인) '게임 보드', '게임 규칙', '게임 엔진'등을 기반으로하는 특정 게임 엔진을 제작자가 조립하게됩니다.

2

다양한 게임에 아키텍처를 설정하려고하기 때문에 공장 및/또는 추상적 인 공장 패턴을 구현할 때 손을 잡을 수있는 좋은 곳입니다. 그런 식으로 게임의 새로운 인스턴스를 요구할 때 특정 게임이 시작되는 코드를 공장에서 게임의 새로운 인스턴스를 요청하는 것과 분리 할 수 ​​있습니다.

디자인 패턴이 자동으로 코드를 "더 좋게"만들지는 않는다는 점에 유의하고 싶습니다. 나쁘지는 않아도 디자인 패턴은 복잡한 시스템과 재사용 가능하고 확장 가능한 코드 기반 (더 나은 조직과 명료성을 만드는 것은 말할 것도없이)에 매우 유용하지만 의미가있을 때만 적용되어야합니다. 코드의 모든 곳에서 디자인 패턴을 적용하려고하면 특정 문제에 맞지 않거나 복잡한 측면에서 과도한 패턴을 구현할 가능성이 높습니다.

안녕하세요 세계 응용 프로그램에서 hello world 문자열의 인스턴스를 생성하는 팩토리를 작성하면 분명히 과장입니다. 커다란 엔터프라이즈 클라이언트/서버 아키텍처에서 미리 구성된 소켓 연결을 나눠 주도록 팩토리를 작성하는 것이 더 자연스럽게 적합합니다. 귀하의 응용 프로그램은 아마도 중간에 어딘가에 머물러 있으며, 귀하의 특정 프로젝트에서 디자인 패턴이 도움이되는지 여부를 판단 할 수 있습니다.

2

디자인 패턴은 무언가를 디자인하는 방법의 이름 일뿐입니다. tic-tac-toe 게임은 모든 디자인 패턴을 사용할 수도 있고, 없어도 가능합니다. 그것들은 단지 특정한 것을하는 방법에 관한 패턴 일뿐입니다.

더 많은 디자인 패턴을 원하기 때문에 코드를 리팩토링하고 싶지만 충분하지는 않습니다. 코드를 정리하고 더 일반적으로 만들고 다른 게임으로 확장하기를 원하기 때문입니다.

Q.이 어떻게 하나 개의 인스턴스에 network_handler를 제한해야합니다 :

는, 구체적인 예를주고 사용하는 디자인 패턴에 좋은 답변을 얻으려면? - A. 싱글 톤 사용

그렇지 않으면 실제로 모든 디자인 패턴을 포함할만한 이유를 찾을 수 있습니다.