Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java 로 배우는 디자인패턴 입문 Chapter 15. Facade 간단한 창구 2004-1 덕성여자대학교 컴퓨터학부.

Similar presentations


Presentation on theme: "Java 로 배우는 디자인패턴 입문 Chapter 15. Facade 간단한 창구 2004-1 덕성여자대학교 컴퓨터학부."— Presentation transcript:

1 Java 로 배우는 디자인패턴 입문 Chapter 15. Facade 간단한 창구 2004-1 덕성여자대학교 컴퓨터학부

2 덕성여대 컴퓨터학부 2 01. Facade 패턴  객체 지향 프로그램은 많은 클래스와 객체들로 이루어지고, 서로 복잡한 관련을 맺고 있다. – 이들을 모두 이해하고 제어하기가 힘들다. – 이들을 제어하기 위한 ‘ 창구 ’ 역할을 담당하는 클래스를 만들자  facade: 건물의 정면  복잡한 내부는 숨기고, 높은 레벨의 인터페이스 (API) 를 외부 에 제공한다.

3 덕성여대 컴퓨터학부 3 01. Facade 패턴

4 덕성여대 컴퓨터학부 4 02. 예제 프로그램  사용자의 웹페이지를 작성하는 프로그램  Facade 패턴의 예를 보이지 위해서는 “ 복잡하게 얽혀 있는 많은 클래스 ” 가 필요하다. – 그러나, 본 예제에서는 3 개의 클래스로 구성된 시스템을 생각 한다. Facade 역할 (High-level API 제공 )

5 덕성여대 컴퓨터학부 5 02. 예제 프로그램  만들고자 하는 웹페이지

6 덕성여대 컴퓨터학부 6 02. 예제 프로그램  클래스 다이어그램 Facade 역할 (High-level API 제공 ) Subsystem

7 덕성여대 컴퓨터학부 7 02. 예제 프로그램  소스파일 디렉토리 구조

8 덕성여대 컴퓨터학부 8 02. 예제 프로그램  Database 클래스 – 데이터베이스 명을 지정하면, 그것에 해당하는 Properties 를 작 성하는 클래스 –getProperties(String dbname)  Properties 인스턴스를 생성한 후, dbname.txt 파일로부터 여러 가 지 속성 값을 읽어 들여 이를 리턴하는 메소드  Properties 클래스 –key 와 value 쌍으로 되어 있는 속성의 집합을 유지하는 클래스  maildata.txt – 속성을 저장하고 있는 파일 – 형식 : key=value

9 덕성여대 컴퓨터학부 9 02. 예제 프로그램  HtmlWriter 클래스 – 간단한 웹페이지를 작성하는 클래스 – 생성자  Writer 타입의 인스턴스를 받아들여, 멤버 변수인 write 에 할당한다. –title( ): 헤더 및 타이틀에 대한 html 태그를 작성하는 메소드 –paragraph( ): 문단을 작성하는 메소드 –link( ): 하이퍼링크를 만드는 메소드 –mailto( ): 메일주소 링크를 만드는 메소드 –close( ): HTML 출력을 끝내는 메소드 – 제약조건 : title( ) 메소드가 제일 먼저 호출되어야 한다.  이 조건은, 창구가 되는 PageMake 클래스에 표현되어 있다.

10 덕성여대 컴퓨터학부 10 02. 예제 프로그램  PageMaker 클래스 –Database 클래스와 HtmlWriter 클래스를 조합하여, 지정된 사 용자의 웹 페이지를 작성하기 위한 클래스 –makeWelcomePage(String mailaddr, String filename)  Database 클래스를 이용해서 – “maildata.txt” 파일로부터 속성 집합을 얻은 후, 속성 중에서 입력 인 자로 들어온 mailaddr 를 key 로 하여 해당 value 를 얻는다.  HtmlWriter 클래스의 메소드들을 이용해서 – 입력 인자로 들어온 filename 파일에 HTML 문서를 작성한다.

11 덕성여대 컴퓨터학부 11 02. 예제 프로그램  Main 클래스 –pagemaker 패키지의 PageMaker 클래스를 이용해서, a1@yonugin.com 를 key 로 한 value 를 가지고 “welcom.html” 이 라는 HTML 문서를 완성한다. a1@yonugin.com –Main 클래스는, Database 나 HtmlWriter 클래스를 직접 이용하 지 않고, high-level API 를 제공하는 PageMaker 의 메소드만을 사용하여 원하는 작업을 한다.

12 덕성여대 컴퓨터학부 12 03. 등장 역할  Facade( 정면 ) 의 역할 – 시스템을 구성하는 많은 역할의 ‘ 간단한 창구 ’ 가 되는 역할을 한다. – 높은 레벨에서 간단한 인터페이스를 시스템 외부에 제공한다. – 예제에서는 PageMaker 클래스가 해당됨  시스템을 구성하고 있는 그 밖의 많은 역할 –Facade 역할로부터 호출되는, 시스템을 구성하는 많은 클래스 들 – 이들은, Facade 역할은 의식하지 않는다 – 예제에서는, Database 와 HtmlWriter 클래스가 해당됨

13 덕성여대 컴퓨터학부 13 03. 등장 역할  Client( 의뢰자 ) 의 역할 –Facade 패턴을 이용하는 역할 – 예제에서는, Main 클래스가 해당됨

14 덕성여대 컴퓨터학부 14 04. 독자의 사고를 넓혀주는 힌트  Facade 역할이 하는 일은 무엇일까 – 복잡한 것을 단순하게 보여준다  내부에서 작동하고 있는 많은 클래스들의 관계나 사용법을 의식하 지 않도록 해 주는 역할  외부에 보이는 API 를 적게 해 주고 단순하게 해 준다.  재귀적인 Facade 패턴의 적용 – 여러 패키지들이 있고, 패키지마다 Facade 역할이 정의되어 있 다면, 이들 Facade 들에 대한 Facade 역할을 재귀적으로 정의 할 수 있다

15 덕성여대 컴퓨터학부 15 05. 관련 패턴  Abstract Factory 패턴 (8 장 )  Singleton 패턴 (5 장 )  Mediator 패턴 (16 장 )

16 덕성여대 컴퓨터학부 16 06. 요약  복잡한 시스템에 대한 간단한 창구의 역할을 하는 Facade 패 턴

17 덕성여대 컴퓨터학부 17 연습 문제  15-1 – 외부에서 절대로 Database 클래스나 HtmlWriter 클래스를 이용 할 수 없도록 하려면, 어떻게 예제 프로그램을 변경해야 하는가 ?  15-2 –maildata.txt 의 내용을 이용해서, 메일 주소 링크 만을 포함하는 파일을 만드는 makeLinkPage( ) 메소드를 PageMaker 클래스에 추가하기  예 : 그림 15-7, 15-8, 15-9


Download ppt "Java 로 배우는 디자인패턴 입문 Chapter 15. Facade 간단한 창구 2004-1 덕성여자대학교 컴퓨터학부."

Similar presentations


Ads by Google