객체 지향 설계 연습하기 - 블랙잭 (7)
들어가며
- 업무에 Java를 사용하고 있지만, 깊은 이해도가 부족하다는걸 절감.
- 단순 객체 생성 및 비즈니스 로직 구현에만 매달리고 있음. 회의감이 듦.
- 신규 개발 뿐만 아니라 유지 보수 및 리팩토링시 객체 지향의 묘미를 살려보고자 함
- 객체 지향적 시야와 사고는 연습뿐이라는 것을 여러 커뮤니티에서 수집
- 객체 지향 설계 연습을 통해 객체 지향적 시야와 이해력을 높이고지 함
UML 3번째 버전입니다.
- 블랙잭의 실제 룰 및 게임을 구현할 게임 판에서는 Dealer와 Player 두 객체의 최소한의 접근을 통해 게임 룰을 구현하고 싶었음.
- 따라서, 짜낼 수 있는 모든 생각을 동원해 추상화, 인터페이스를 이용했고, 객체가 가지는 실제 특성을 상속 및 인터페이스 구현에 집어 넣고 싶었음.
- 오늘까지 완성된 3번째 버전의 UML은… 주어진 목적은 달성했지만, 깔끔하지 못한것 같음.
개인 평가를 하자면, Rule 부분이 엉성하게 설계된것 같고, abstract, interface의 사용이 적절했는지 판단이 안됨.
Source Code
gist:ppzxc/5362c6a83e87ade07cc19cc8070b7127
끝으로
골몰히 보면서 이리 돌려보고 저리 돌려보고 있지만, 이게 맞는 설계인지, 아닌지 감도 잡히지 않습니다.
디자인 패턴 책에서는 확장성, 의존성 분리 등등 문제에 맞는 해결 법을 제시하고 있지만, 저는 블랙잭 게임에서 문제를 정의하고 있지 못하고 있는것 같습니다. 따라서, 순수하게 객체로써 가져야할 행동들, 변수들을 정의해가면서 바꿔봤습니다. 따라서, UML은.. 상식을 벗어날 수도 있습니다.. 자신이 없네요. 이게 끝이 아닌 지속적으로 발전시켜 나갈 블랙잭 및 객체지향, 패턴 공부일테니 더 치열하게 고민해 봐야 될것 같습니다.