java 디자인패턴 2일차

GoF 의 자바 디자인 패턴, 인프런 강의

코드 링크

5. 프로토타입 패턴

  • 복잡한 인스턴스를 복사 할 수 있다
  • 복사할 원형
  • 생산 비용이 높은 인스턴스를 복사 한다.
    • 종류가 너무 많아서 클래스로 정리되지 않는다.
    • 클래스로부터 인스턴스 생성이 어렵다.
      1. 요구사항
        • 어떤 모양을 그릴 수 있도록 하고 복사 붙혀넣기 기능 구현
      2. 구현
    • 자바에는 이미 clone 가 가능함
    • implements Cloneable 를 사용하면 사용 할 수 있다.
      1. 요구사항
    • 복사 후 붙혀 넣기를 하면 두 도형이 겹치는데 안겹치도록 살짝 옆으로
      1. 알아두면 좋은 복사
    • 깊은 복사
      • clone 를 이용하여 값을 복사해서 생각 하는 2개의 인스턴스
      • 문제점 기본 변수는 가능 하지만 사용자 클래스는 깊은 복사가 안 일어남
    • 얕은 복사
      • 주소값을 복사한다. = 을 사용해서 대입 할때

6.1 빌더 패턴(책)

  • 복잡한 단계가 필요한 인스턴스 생성을 패턴을 통해 구현
    1. 생각의 흐름
      • 컴퓨터 컴1 = 뉴 컴퓨터(사양1, 사양2 ,…);
      • 위 처럼 가능 하지만 너무 복잡하고 길어짐
      • 그래서 다른 클래스에서 만들온다.
    2. 빌더 패턴 생각의 흐름
      • 공장을 만든다.
      • 공장에서 설계도를 받는다.
        • 추상으로 만들어서 원하는 설계도만 추가하면 간단하게 만들 수 있다.
      • 공장에서 설계도로 만든다.
      • 공장에서 결과를 반환 한다.

6.2 빌더 패턴(현장)

  • 많은 변수를 가진 객체의 생성을 가독성 높도록 코딩
  • Computer com = ComputerBuilder
      .start()
      .setCpu("i7")
      .setRam("8g")
      .setStrorage("256g ssd")
      .buid();
    

    #### 7.1 추상 팩토리 패턴

  • 관련 있는 객체의 생성을 가상화 한다.
  • 바이크팩토리 패토리 = 뉴 삼천리바이크팩토리 팩토리.바디생성 팩토리.휠생성
  • 위 흐름 처럼 원하는공장을 만들고 원하는 결과를 만든다.

PyeongHo

즐겁게 또 즐겁게