분류 전체보기
-
행위패턴 : Mediator 패턴디자인패턴 2013. 2. 28. 10:26
분류 : 행위패턴(Behavioral Patterns) 정의 : 여러개의 객체와 상호작용하는 것을 캡슐화하는 객체. 객체간의 결합도를 느슨하게 만듬. 용도 : Mediator - Colleague 객체간의 통신을 위한 인터페이스를 정의함. ConcreteMediator - Mediator 인터페이스를 구현하고 Colleague 객체간의 통신을 관리함. 모든 Colleagues와 Colleagues의 내부 통신 방법을 알고 있음. ConcreteColleague - Colleagues의 Mediator를 통해서 각 Colleagues간에 통신을 함. 소스 import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.Action..
-
행위패턴 : Interpreter 패턴디자인패턴 2013. 2. 27. 10:11
분류 : 행위패턴(Behavioral Patterns) 정의 : 언어에서 문장을 해석할때 사용되는 패턴 용도 :SQL 같은 데이터베이스 쿼리 언어에 상용통신 프로토콜을 설명하는데 자주사용됨. 소스 import java.util.Map; public interface Expression { public int interpret (Map variables); } import java.util.Map; public class Minus implements Expression { Expression leftOperand; Expression rightOperand; public Minus(Expression left, Expression right) { leftOperand = left; rightOperand..
-
리팩토링 : Substitute Algorithm리팩토링 2013. 2. 27. 09:00
조건알고리즘을 더욱 명료하게 하나로 변경하고 싶으면 적용메소드의 내용을 새로운 알고리즘으로 변경하시오. 적용전 String foundPerson(String[] people){ for (int i = 0; i < people.length; i++) { if (people[i].equals ("Don")){ return "Don"; } if (people[i].equals ("John")){ return "John"; } if (people[i].equals ("Kent")){ return "Kent"; } } return ""; } 적용후 String foundPerson(String[] people){ List candidates = Arrays.asList(new String[] {"Don", "Jo..
-
행위패턴 : Command 패턴디자인패턴 2013. 2. 26. 09:30
분류 : 행위패턴(Behavioral Patterns) 정의 : 요청을 객체 형태로 캡슐화해서 서로 요청이 다른 사용자의 매개변수와, 요청 저장 또는 로깅, 명령의 취소를 지원하게 하는 패턴 용도 :GUI 버튼과 메뉴 아이템매크로 기록다단계 Undo네트워크를 통한 명령 전송 병렬처리진행상태 바스레드 풀트랜잭션형 행위마법사 형태의 처리 소스 //커맨드 인터페이스 public interface Command { void execute(); } // 라이트를 켜는 명령(커맨드) - ConcreteCommand #1 public class FlipUpCommand implements Command { private Light theLight; public FlipUpCommand(Light light) { th..
-
리팩토링 : Split Temporary Variable리팩토링 2013. 2. 26. 09:30
조건한번 이상 할당되는 임시변수가 있지만, 루프 변수도 아니고 임시변수를 수집하지도 않으면 적용각 할당에 대한 임시변수를 분리하도록 만드시오. 적용전 double temp = 2 * (_height + _width); System.out.println (temp); temp = _height * _width; System.out.println (temp); 적용후 final double perimeter = 2 * (_height + _width); System.out.println (perimeter); final double area = _height * _width; System.out.println (area); 참조http://www.refactoring.com/catalog/splitTempo..
-
리팩토링 : Split Loop리팩토링 2013. 2. 25. 09:00
작자 : Martin Fowler 조건두가지를 수행하는 루프가 있다면 적용루프를 분리하시오. 적용전 void printValues() { double averageAge = 0; double totalSalary = 0; for (int i = 0; i < people.length; i++) { averageAge += people[i].age; totalSalary += people[i].salary; } averageAge = averageAge / people.length; System.out.println(averageAge); System.out.println(totalSalary); } 적용후 void printValues() { double totalSalary = 0; for (int i ..