본문 바로가기
Software Science

[java pattern] 1주

by 101Architect 2024. 1. 14.

이전: https://blog.naver.com/101story/100169473958

 

[java pattern] 1주

Abstract - 추상적인 공장이 등장하고, 추상적인 부품을 조합해서 추상적인 제품을 만듬. Adapter - '이...

blog.naver.com

-  java 언어로 배우는 디자인 패턴 입문 책을 보고 공부 중 - 

Abstract - 추상적인 공장이 등장하고, 추상적인 부품을 조합해서 추상적인 제품을 만듬.
Adapter - '이미 제공되어 있는 것'과 '필요한 것' 사이의 '차이'를 없애주는 패턴.
Builder - 추상클래스로서 실제의 처리는 기술되어 있지 않고, 추상 메소드만 선언되어 있음.
Factory - 인스턴스를 만드는 방법을 상위 클래스 측에서 결정하지만 구체적인 클래스 이름까지는 결정하지 않음.
Iterator - 무엇인가 많이 모여 있는 것들을 순서대로 지정하면서 전체를 검색하는 처리를 실행하기 위한 것.
Prototype - 인스턴스로 부터 인스턴스를 만드는 방법
Singleton - 요소를 1개 밖에 가지고 있지 않은 집합.
Template - 상위 클래스에서 처리의 뼈대를 결정하고, 하위 클래스에서 그 구체적인 내용을 결정.

 

▶ Abstract

정의 :  추상적인 공장이 등장하고, 추상적인 부품을 조합해서 추상적인 제품을 만듬.

- 추상적인 공장 : public abstract class Factory
  추상적인 공장을 나타내는 클래스(Link, Page를 만든다.)

- 추상적인 부품 : public abstract class Link  
  HTML의 LINK를 나타내는 클래스

- 추상적인 부품 : public abstract class Page
  HTML의 Page를 나타내는 클래스

- 구체적인 공장 : public class ListFactory extends Factory
  구체적인 공장을 나타내는 클래스(ListLink, ListPage를 만든다.)

- 구체적인 부품 : public class ListLink extends Link
  HTML의 LINK를 나타내는 클래스

- 구체적인 부품 : public class ListPage extends Page
  HTML의 Page를 나타내는 클래스

▶ Adapter

정의 : '이미 제공되어 있는 것'과 '필요한 것' 사이의 '차이'를 없애주는 패턴.

- 필요로 하는 클래스 : public interface print or public abstract class print
  print 클래스를 상속하는 클래스에서 반듯이 구현 되어야 하는 클래스를 선언.

- 어댑터의 역할 : public class PrintBanner extends Print  
  print 클래스를 상속하여 구체적으로 정의되어 있는 클래스(Banner)를 상황에 맞에 호출.

- 미리 제공되고 있는 클래스 : public class Banner 
  구체적인 로직이 구현되어 있는 클래스.

 

▶ Builder

정의 : 추상클래스로서 실제의 처리는 기술되어 있지 않고, 추상 메소드만 선언되어 있음.

- 추상적 클래스 : public abstract class Builder
  문서를 구성하기 위한 메소드를 결정하는 추상클래스

- 문서의 내용을 넣는 클래스 : public class Director
  각각의 다른 builder를 받아 builder에 동일한 문서를 만드는 클래스.

- 구체적 클래스 : public class HTMLBuilder extends Builder
  HTML 파일을 이용해서 문서를 만드는 클래스

- 구체적 클래스 : public class TextBuilder extends Builder
  일반 텍스트(보통의 문자열)를 이용해서 문서를 만드는 클래스

 

▶ Factory

정의 : 인스턴스를 만드는 방법을 상위 클래스 측에서 결정하지만 구체적인 클래스 이름까지는 결정하지 않음.
구체적인 내용은 모두 하위 클래스에서 수행.

- 추상적 공장 : public abstract class Factory
  product를 구현 하는 메소드 create을 구현하고 있는 추상 클래스

- 추상적 제품 : public abstract class Product
 추상 메소드 use만 정의되어 있는 추상 클래스

- 구체적 공장 : public class IDCardFactory extends Factory
  구체적인 제품을 생성, 등록 하는 메소드 createProduct, registerProduct를 구현하고 있는 클래스

- 구체적 제품 : public class IDCard extends Product
  구체적인 제품의 동작을 구현하고 있는 클래스.

 

▶ Iterator

정의 : 무엇인가 많이 모여 있는 것들을 순서대로 지정하면서 전체를 검색하는 처리를 실행하기 위한 것.

- 검색 인터페이스 : public interface Iterator
하나씩 나열하면서 검색을 실행하는 인터페이스

- 집합체 인터페이스 : public interface Aggregate
iterator를 가지는 집합체를 나타내는 인터페이스

- 책 : public class Book
책을 나타내는 클래스

- 서가 : public class BookShelf implements Aggregate
서가를 나타내는 클래스

- 서가 검색 : public class BookShelfIterator implements Iterator
서가를 검색하는 클래스

 

▶ Prototype

정의 : 클래스로부터 인스턴스를 생성하는 것이 아니라 인스턴스로 부터 인스턴스를 만드는 방법.

- 인스턴스 복제 : public class Manager
  createClone을 사용해서 인스턴스를 복제하는 클래스
  product의 createClone을 사용하면 원본은 그대로 두고 해당 key에 해당하는 인스턴스를 복제 해줌

- 추상적 제품 : public interface Product extends Cloneable
추상 메소드 use와 createClone이 선언되어 있는 인터페이스

- 문자열 테두리 표시 : public class MessageBox implements Product
테두리로 사용할 char를 받고 문자열을 받아서 테두리를 표시해줌

 

▶ Singleton

정의 : 요소를 1개밖에 가지고 있지 않은 집합. 생성자는 private, getInstance 메소드를 호출했을 때 singleton 클래스는 초기화됨.

- 클래스 : public class Singleton

  a. private static Singleton singleton = new Singleton();
자신이 자신의 인스턴스를 가짐

  b. private Singleton(){}
생성자는 private

  c. public static Singleton getInstance() {  return singleton;  }
자신의 인스턴스를 리턴

 

▶ Template

정의 : 상위 클래스에서 처리의 뼈대를 결정하고, 하위 클래스에서 그 구체적인 내용을 결정하는 디자인 패턴.

- 추상 클래스 : public abstract class AbstractDisplay
  메소드 display 만 구현되고 있는 추상 클래스

- 구체적 클래스 : public class StringDisplay extends AbstractDisplay
  메소드 open, print, close를 구현하고 있는 클래스

반응형

'Software Science' 카테고리의 다른 글

Enterprise Architecture EA  (0) 2023.06.04
web browser의 가치관  (0) 2023.03.19
빅데이타 분석 맛보기  (0) 2023.03.08
100년된 IBM, 10년된 Agile  (0) 2023.03.08
UML Class Diagram 을 자바 소스로 구현 기준  (0) 2023.03.08