본문 바로가기

Pattern

[JAVA] Pattern, Matcher 더보기
[Java-Pattern] Prototype 인스턴스를 생설할때 new를 사용하는 것이 아니라 이미 만들어진 인스턴스를 복사해서 새로운 인스턴스를 만들어 내는 패턴이다. 이 인스턴스 생성 방식을 사용 하는 이유는 1. 종류가 너무 많아 한개의 클래스로 할 수 없는 경우 2. 클래스로부터 인스턴스를 생성하기 어려운 경우 3. 프레임워크와 생성할 인스턴스를 분리하고 싶은 경우 정도로 나눌 수 있다. 예를 보면.. Product 인터페이스와 Manager 클래스는 framework패키지에 속해있고, 인스턴스를 복제하는 일을 한다. Manager클래스는 createClone을 호출하지만 구체적의 어느 클래스의 인스턴스인지 까지는 알지 못 하며 단지 Product인터페이스를 구현한 클래스의 인스턴스라면 복제가 가능하다. MessageBox클래스와 Under.. 더보기
[Java-Pattern] Builder 문서작성 프로그램을 예제로.. Builder라는 추상 클래스를 만들고 여기에 추상메서드 makeTitle,makeString,makeItems,getResult라는 메서드를 둔다.. 그리고 Builder를 상속하는 TextBuilder,HTMLBuilder 클래스를 만들고 위 추상 메서드들을 구현하여 준다. 이름만 봐도 알겠지만 하나는 텍스트로 만들어서 뿌려주는 클래스고 하나는 html형식으로 파일을 만들어주는 클래스이다. 그리고 클라이언트쪽에서는 저 Builder를 직접 호출하는 것이 아니라 Director라는 클래스를 통해서 호출한다. Director클래스는 public class Director { private Builder builder; public Director(Builder builder.. 더보기
[Java-Pattern] Bridge 이 패턴은 기능의 클래스 계층과 구현의 클래스 계층으로 나누어 설계하는 것이다. 기능의 클래스 계층이란 Something이란 클래스가 있을때 여기에 새로운 기능을 추가하기 위해서 Something의 하위 클래스로서 SomethigGood이라는 클래스를 만들어 기능을 확장할때 이것을 기능의 클래스 계층이라 한다. 구현의 클래스 계층이란 A라는 추상메서드를 상속하는 B클래스에서 그 추상메서드에서 선언된 메서드들을 실제로 구현하게 되는데 이를 구현의 클래스 계층이라고 한다. 예제프로그램 여기서는 주어진 문자열을 박스안에 넣어서 출력하는 클래스 하나와 주어진 숫자만큼 반복해서 출력하는 프로그램을 예제로 사용하였다. 기능의 클래스 계층 - Display(표시하는 클래스),CountDisplay(지정 횟수만큼 표시.. 더보기
[Java-Pattern] Visitor Composite 패턴과 조금 유사한 형태이다. 데이터 구조와 처리를 분리시킨 패턴으로 데이터 구조안을 돌아다니는 주체인 방문자를 나타내는 클래스를 준비해서 그 클래스에게 처리를 맡기는 패턴이다. 새로운 처리를 추가하고 싶을때는 새로운 방문자를 만들면 되는 것. 그리고 데이터 구조는 문을 두드리는 방문자를 받아들이면 된다. 디렉토리 구조를 다시 예제 프로그램으로.. 8개의 클래스로 분류된다. 1.Visitor - 파일이나 디렉토리를 방문하는 방문자를 나타내는 추상 클래스 2.Acceptor - Visitor 클래스의 인스턴스를 받아들이는 데이터 구조를 나타내는 인터페이스 3.ListVisit - Visitor의 하위 클래스로 파일이나 디렉토리의 일람을 나타내는 클래스 4.Entry - 파일과 디렉토리의 .. 더보기
[Java-Pattern] Chain of Responsibility 책임 떠넘기기 패턴 어떤 처리 요구가 들어왔을때, 그것을 처리 할 수 있는 인스턴스가 나타날때까지 그 처리를 넘기는 패턴이다. 예제프로그램은 임의의 숫자를 가진 트러블을 발생시키고, 트러블을 해결하는 클래스들을 종류별로 만들어 놓은 후 Chain of Responsibility패턴을 구현한 것이다. 1.Trouble - 발생한 트러블을 나타내는 클래스. 트러블 번호를 갖는다. 2.Support - 트러블을 해결하는 추상 클래스 3.NoSupport - 트러블을 해결하는 클래스 (항상 처리하지 않음.) 4.LimitSupport - 트러블을 해결하는 클래스 .... Trouble Class public class Trouble { private int number; // 트러블 번호 public Troub.. 더보기
[Java-Pattern] Mediator 조정자 역할을 하는 클래스를 뜻한다. 여러 클래스들이 서로 연관되어서 통신을 하게 될 경우 A,B 두개의 클래스라면 2개,A,B,C라면 6개..등등 클래스가 하나하나 늘어날때마다 제어해줘야하는 통신량은 어마어마하게 늘어나게 된다. 예를 들어 로그인 창을 하나 만든다고 할때, guest를 클릭하면 입력필드가 disable되고, login을 클릭하면 입력필드가 enable되면서 버튼이 생기고 이런 서로 연관된 동작을 가운데 중재자를 두어 통제하는 패턴 방식이다. 예제는 위에서 얘기한 로그인 애플릿 창이다. 등장 클래스.. 1.Mediator - 카운셀러의 인터페이스를 정하는 인터페이스 2.Colleague - 멤버의 인터페이스를 정하는 인터페이스 3.ColleagueButton - 버튼을 나타내는 클래스 4.. 더보기