Shino72
close
프로필 배경
프로필 로고

Shino72

  • 분류 전체보기 (137)
    • 디자인패턴 (4)
    • 안드로이드 (51)
      • 앱 개발 (7)
      • KOTLIN (11)
      • 날씨 앱 만들기 (0)
      • Compose (14)
      • 반응속도 테스트 앱 만들기 (0)
      • Action Kotlin (6)
    • Flutter (6)
      • Study (2)
    • 알고리즘 (2)
    • 백준 (71)
      • 다익스트라 (4)
      • 투 포인터 (9)
      • DP (12)
      • bfs dfs (17)
      • 구현 (3)
      • 그래프 이론 (3)
      • 플로이드 와샬 (2)
      • String Matching (1)
      • 기타 (14)
    • 시위 (1)
    • 개발 (1)
    • Dart (1)
  • 홈
  • 태그
  • 방명록

디자인 패턴 - 팩토리 패턴

본 게시글은 '헤드퍼스트-디자인 패턴 (개정판)'을 기준으로 작성된 글입니다. 문제점 찾아보기 Duck duck; if (picnic) { duck = new MallardDuck(); } else if (hunting){ duck = new DecoyDuck(); } else if (inBathTub) { duck = new RubberDuck(); } 다음 코드에서의 문제점은, 각 조건에 따라 다른 Duck이 생성이 된다. 만약 새로운 Duck을 추가하기 위해 확장한다면, 어떤 것을 추가하고 삭제해야할 지 코드를 다시 확인해야 한다. 결론 Concrete Class(구상 클래스)를 많이 사용하면, 새로운 구상 클래스가 추가될 때마다 코드를 고쳐야하므로 많은 문제가 생길 수 있다. 결국 변화에 닫혀 있..

  • format_list_bulleted 디자인패턴
  • · 2023. 9. 5.
  • textsms
[디자인 패턴] - 데코레이터 패턴

[디자인 패턴] - 데코레이터 패턴

본 게시글은 '헤드퍼스트-디자인 패턴 (개정판)'을 기준으로 작성된 글입니다. 데코레이터 패턴이란? 객체의 추가 요소를 동작으로 더할 수 있다. 데코레이터를 사용하면, 서브클래스를 만들 때 보다 훨씬 유연하게 기능을 확장할 수 있다. 가정 - 카페 카페의 음료 주문 시스템을 구현하는 상황을 가정해보자. 가정 1 카페에는 아이스티도 있고, 카페모카도 있고, 아이스 아메리카노 등 여러가지 음료가 있다. 공통적으로 가지고 있는 '음료'라는 성질을 가지고 있는 클래스를 만들고, 이것을 상속받아 각 음료를 구현하였다. 가정 1의 문제 만약에 새로운 손님이 와서 '휘핑도 추가해주시고, 여기 샷도 추가해주세요' 와 같은 새로운 요구사항이 담긴 주문을 하게 된다면, 어떻게 될까? 다음 그림과 같이 매우 복잡한 결과가 ..

  • format_list_bulleted 디자인패턴
  • · 2023. 9. 1.
  • textsms
[디자인 패턴] - 옵저버 패턴

[디자인 패턴] - 옵저버 패턴

본 게시글은 '헤드퍼스트-디자인 패턴 (개정판)'을 기준으로 작성된 글입니다. 옵저버 패턴이란? 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다. 간단하게 말하면, 신문사와 구독자가 있을 때, 신문사를 주제 / 구독자를 옵저버라고 부른다. 주제 객체는 주제에서 중요한 데이터를 관리하고, 옵저버 객체의 경우에는 주제를 구독하며, 주제의 데이터가 바뀔 때 마다 갱신 내용을 전달 받는다. 핵심은 1대다 이다. 어떤 객체가 변화할 때 이와 연관된 여러 객체에게 직접 통보하지 않고, 중간 관리자(옵저버)를 두어 변화의 감지와 통보를 대신하게 한다 옵저버 패턴은 다양한 방식으로 구현할 수 있다. 보통은 주제 인터페이스와 옵저버 인터페..

  • format_list_bulleted 디자인패턴
  • · 2023. 8. 31.
  • textsms
[디자인패턴] - 전략 패턴

[디자인패턴] - 전략 패턴

본 게시글은 '헤드퍼스트-디자인 패턴 (개정판)'을 기준으로 작성된 글입니다. 전략 패턴이란? 전략 패턴이란 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. 왜 사용할까? 예를들어 오리 시뮬레이션 게임을 제작한다고 가정해보자. 먼저 Duck 이라는 슈퍼 클래스를 만들고, 클래스를 확장하여 다른 종류의 오리들을 만들었다고 가정해보자. 만약 fly() 기능을 추가해달라고 한다면? 기존의 Duck 클래스에 fly()를 추가해주고, 각 서브클래스에서 fly()를 상속받게 해준다. 날면 안되는 오리가 있다면? 날면 오리가 안되는 오리가 있다면, 수퍼 클래스에 fly()를 추가하는 행동으로 날면 ..

  • format_list_bulleted 디자인패턴
  • · 2023. 8. 30.
  • textsms
  • navigate_before
  • 1
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (137)
    • 디자인패턴 (4)
    • 안드로이드 (51)
      • 앱 개발 (7)
      • KOTLIN (11)
      • 날씨 앱 만들기 (0)
      • Compose (14)
      • 반응속도 테스트 앱 만들기 (0)
      • Action Kotlin (6)
    • Flutter (6)
      • Study (2)
    • 알고리즘 (2)
    • 백준 (71)
      • 다익스트라 (4)
      • 투 포인터 (9)
      • DP (12)
      • bfs dfs (17)
      • 구현 (3)
      • 그래프 이론 (3)
      • 플로이드 와샬 (2)
      • String Matching (1)
      • 기타 (14)
    • 시위 (1)
    • 개발 (1)
    • Dart (1)
최근 글
인기 글
최근 댓글
태그
  • #MVVM
  • #compose
  • #밀어서 잠금해제
  • #Jetpack
  • #반응형 이미지
  • #kotlin
  • #AnchoredDraggable
  • #Android
  • #jetpack compose
  • #눈 이펙트
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바