디자인 패턴 정리 - Polymorphism

2021. 11. 19. 15:57·CS/GoF의 Design Pattern 정리

Polymorphism _ 다형성

  • 하나의 객체가 여러개의 타입을 가질 수 있는것을 말한다.
  • 부모 클래스 타입의 참조변수로 여러 자식 클래스 타입의 인스턴스를 참조할 수 있다.
  • 인스턴스를 이용한 상속관계 및 오버라이딩을 사용하여 구현한다.

Main.java _ 코드

import Converter.DocxDocConverter;
import Converter.OdtDocConverter;
import Converter.PdfDocConverter;

public class Main {
    public static void main(String[] args) {
        WordProcessor wp = new WordProcessor("new doc");
        wp.setSpellChecker(new EngSpellChecker());

        wp.addDocConverter(new DocxDocConverter());
        wp.addDocConverter(new PdfDocConverter());
        wp.addDocConverter(new OdtDocConverter());

        wp.checkSpelling();

        wp.convertDocTo("odt");
        wp.convertDocTo("pdf");
        wp.convertDocTo("docx");
        wp.convertDocTo("wps");
    }
}

설명

  • WordProcessor클래스는 문서 변환기, 맞춤법 검사기를 등록할 수 있다. 이를 사용하여 맞춤범을 검사하고 문서를 변한한다.
    코드
  • EngSpellChecker클래스는 구현 클래스로 ISpellChecker 인터페이스를 상속받아서 구현한 클래스이다. 영어 맞춤법을 검사한다.
    코드
  • DocxDocConverter, PdfDocConverter, OdtDocConverter클래스는 DocConveter Abstract 클래스를 상속받아서 구현한 구현한 클래스이다.
    코드

로직

main클래스에서 문서 처리기를 만들고, 해당 문서 처리기에 EngSpellChecker를 추가한다. EngSpellChecker는 IspellChecker 인터페이스를 구현한 클래스로 영어 스펠링 체크를 담당하여 구현한 클래스이다. addDocConverter()를 통해 문서 별 DocConverter를 생성하여 추가해 준다. 이때 각 문서 Converter들은 추상클래스 DocConverter를 상속받아서 구현한다.

결과

Checking English Spelling...
new doc.odt로 변환해서 저장합니다.
new doc.pdf로 변환해서 저장합니다.
new doc.docx로 변환해서 저장합니다.
wps파일 형식을 지원하는 DocConverter가 없습니다.
반응형
저작자표시 비영리 변경금지 (새창열림)

'CS > GoF의 Design Pattern 정리' 카테고리의 다른 글

디자인 패턴 정리 - Singleton Pattern  (1) 2021.11.19
디자인 패턴 정리 - Factory Method Pattern  (0) 2021.11.19
디자인 패턴 정리 - Decorator Pattern  (0) 2021.11.19
디자인 패턴 정리 - Observer Pattern  (2) 2021.11.19
디자인 패턴 정리 - Strategy Pattern  (0) 2021.11.19
'CS/GoF의 Design Pattern 정리' 카테고리의 다른 글
  • 디자인 패턴 정리 - Factory Method Pattern
  • 디자인 패턴 정리 - Decorator Pattern
  • 디자인 패턴 정리 - Observer Pattern
  • 디자인 패턴 정리 - Strategy Pattern
구름뭉치
구름뭉치
구름의 개발일기장
  • 구름뭉치
    구름 개발일기장
    구름뭉치
  • 전체
    오늘
    어제
    • ALL (283)
      • 프로젝트 (23)
        • 토스페이먼츠 PG 연동 시리즈 (12)
        • JWT 방식 인증&인가 시리즈 (6)
        • 스우미 웹 애플리케이션 프로젝트 (1)
        • 스프링부트 기본 보일러 플레이트 구축 시리즈 (2)
        • 마이크로서비스 아키텍쳐 시리즈 (1)
      • 스프링 (43)
        • 스프링부트 API 설계 정리 (8)
        • 스프링부트 RestAPI 프로젝트 (18)
        • 스프링부트 WebSocket 적용기 (3)
        • 스프링 JPA 정리 시리즈 (5)
        • 스프링 MVC (5)
        • 스프링 배치 (2)
        • 토비의 스프링 정리 (2)
      • 기술 학습 (28)
        • 아파치 카프카 (9)
        • 클린 코드 (4)
        • 디자인 패턴의 아름다움 (2)
        • 모던 자바 인 액션 (7)
        • JVM 스레드 딥다이브 (6)
      • Web (25)
        • 정리글 (20)
        • GraphQL 정리글 (2)
        • Jenkins 정리글 (3)
      • 취업 (6)
      • CS (77)
        • 네트워크 전공 수업 정리 (11)
        • OSI 7계층 정리 (12)
        • 운영체제 정리 (19)
        • 데이터베이스 정리 (5)
        • MySql 정리 (17)
        • GoF의 Design Pattern 정리 (12)
      • 알고리즘 (70)
        • 백준 (56)
        • 프로그래머스 (12)
        • 알고리즘 정리본 (1)
      • 기초 지식 정리 (2)
      • 일상 (8)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부다페스트
    키보드 손목 받침대
    마우스 패드
    동유럽
    크로아티아
    mx master s3 for mac
    레이저
    마우스
    류블라냐
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
구름뭉치
디자인 패턴 정리 - Polymorphism
상단으로

티스토리툴바