본문 바로가기

Define Java/Design&Patterns

Strategy Pattern #2 Strategy Pattern #2 스트래티지 패턴 두번째 시간이다. 우선 저번에 필자가 냈던 문제를 생각해보자~ 1. 개발자는 로봇 게임을 제작중이다. 2. 게임을 더 재밋게 하기 위하여 개발자는 특수기능을 넣을려고 한다. 3. 현재는 특수기능이 "날 수 있는 기능" 밖에 없지만 이후에는 여러가지 기능이 추가 될 수도 있다. 해결방법으로 생각했던 상속을 사용하게 되면 현재 날아다니는 기능은 구현이 가능하나 나중에 특수기능이 더 많이 추가 된다면 문제가 발생한다. 그리고 또 오버라이딩을 한다면 로봇 수가 늘어 나게 될 때 개발자는 죽도록 노가다 코딩을 해야 될 것 이다. 이제 조금 더 쉽게 이 문제를 해결할 수 있는 방법을 생각 해 보자. 필자는 이 문제의 해답은 인터페이스를 잘 사용하므로써 해결 가능하.. 더보기
익스트림 프로그래밍 (XP, eXtreme Programming) 익스트림 프로그래밍(XP) 익스트림 프로그래밍(XP, eXtreme Programming)은 최근의 소프트웨어 개발 방법론 분야에 새로 등장한 개발 방법론이다. XP의 큰 장점은 막판에 스펙이 변경되는 일이 있어도 고객이 원하는 것을 고객이 원하는 기한에 맞춰서 제공할 할 수 있다는 점이다. 1. 조금씩, 하지만 자주발표한다. 2. 사이클을 반복해서 돌리면서 개발한다. 3. 스펙에 없는 것은 절대 집어넣지 않는다. (아무리 그 기능이 나중에 쓰일 것 같은 느낌이 들어도 그러지 않는 것이 좋다.) 4. 테스트코드를 먼저 만든다. 5. 야근은 하지마라. 항상 정규 일과 시간에만 작업한다. 6. 기회가 생기는 족족 언제 어디서든 코드를 개선하라. 7. 모든 테스트를 통과하기 전에는 어떤 것도 발표하지 마라. .. 더보기
MVC 패턴 Model, View, Controller MVC 패턴 Model, View, Controller 1. Model MVC 패턴중 MODEL 영역은 비즈니스 로직을 구현하는 부분이다. 대부분의 Application의 데이터는 데이터베이스에 의해 관리되고 Java에서는 JDBC API를 이용하여 접근하고 사용한다. JDBC API를 이용하여 쿼리문을 날려 그 결과를 전달받는 형태의 모델이 가장 기본적이고 가장 많이 사용되고 있다. Model이란 실질적으로 일을 처리하고 그 데이터를 가공하는 역활을 하는 영역을 뜻한다. 데이터 베이스 접근, 데이터 추가, 데이터 수정, 데이터 삭제 등 사용자가 어떠한 일을 처리하는것을 뜻한다. 2. View 뷰 영역은 개발자 보다는 디자이너와 밀접한 연관이있다. 이 부분은 프리젠테이션 로직으로써 실질적인 End-Use.. 더보기
Strategy Pattern #1 Strategy Pattern 스트래티지 패턴이란 각각의 기능을 하는 클래스를 캡슐화하여 이것을 교환하여 사용할 수 있도록 만드는 역활을 한다. 즉 현재 사용하고 있는 기능(클래스)를 동적으로 변경하여 적용 시킬 수 있다. 간단하게 예를 들자면 로봇 게임이 있다고 하자. (갑자기 http://www.defineyou.net/ 에서 본 로롯코드가 생각나서....) 이 로봇게임에는 여러가지 종류의 로봇이 나온다. 이 여러 종류의 로봇을 제작하기 위해서는 Robot 이라는 클래스를 상속 받아서 제작한다. Robot Class에는 다음과 같은 기능이 있다. turn(); 돌고 도는 메소드 move(); 이동을 하는 메소드 attack(); 공격을 하는 메소드 각 로봇에는 display(); 라는 모양을 뿌려주는.. 더보기
Model1개발 방식과 Model2 개발 방식 Model1개발 방식과 Model2 개발 방식 모델1 방식 모델1 개발방식은 웹 개발자라면 누구나 다 아는 개발 방식이다. 디자인코드(뷰)와 프로그램코드(비지니스 로직)를 따로 구분하지 않고 하나의 파일 또는 여러개의 파일에 넣어 사용하여 제작하는 방식이 모델1 방식이다. 모델 1방식은 비즈니스 로직 즉 프로그램처리 결과에 따라 보여지는 View 페이지를 바꿔주는 것이 쉽지가 않다. 즉 처리 결과에 따라 페이지를 바꿔야 할 경우 처리가 애매하다는 이야기다. (If 문으로 처리한다는 이야기는 스탑. 그런 간단한 이야기가 아니다) 즉 모델1방식은 비지니스로직과 뷰의 구분선이 명확하지 않기 떄문에 구분이 어려우며 재활용성이 떨어진다. 모델1방식은 배우기도 쉬우며 빠르게 개발도 가능하다. 하지만 유지보수시 비지.. 더보기