분류 전체보기333 구조 패턴 - 플라이급(Flyweight) - 참조: https://refactoring.guru/design-patterns/flyweight - 플라이급(Flyweight) GoF의 디자인 패턴에서는 공유를 통해 많은 수의 소립 객체들을 효과적으로 지원한다고 되어있다. 대략적으로 의미는 알것 같기도 한데 뭔가 확실하게 와닿지는 않는다. 개인적으로는 refactoring.guru의 설명이 더 명료하고 와닿는다고 생각한다. refactoring.guru 에서는 "플라이급 패턴은 각 객체에서 데이터를 다루는 대신 객체들의 공통되는 상태를 공유하여 RAM을 확보하는 디자인 패턴이다." 라고 정의하고 있다. - 시나리오 플레이어가 맵을 돌아다니면서 서로 쏘는 게임을 만든다고 가정하자. 많은 양의 총알, 미사일, 파편들이 온 맵에 흩뿌려질것이다. 이 게.. 2021. 5. 19. 구조 패턴 - 퍼사드(Facade) - 참조: GoF의 디자인 패턴 - 참조: https://refactoring.guru/design-patterns/facade - God object: https://en.wikipedia.org/wiki/God_object - 퍼사드(Facade) 패턴 퍼사드(Facade) 는 용어 부터 낯설게 느껴지는것 같아 사전적 정의부터 살펴보는게 좋겠다. Facade는 정면, 표면이라는 뜻으로 이를 알면 왜 패턴의 이름이 퍼사드인지 알 수 있다. 퍼사드 패턴은 라이브러리나 프레임워크 혹은 클래스들의 집합과 같은 서브시스템을 사용하기 쉽도록 하나의 간편한 인터페이스를 제공하는 패턴이다. - 시나리오 비디오 파일을 사용자가 요청한 format 으로 변경해주는 응용프로그램이 있다고 가정하자. 비디오 파일 포맷 변환.. 2021. 5. 12. 구조 패턴 - 장식자(Decorator) - 참조: GoF의 디자인 패턴 - 다른 패턴과의 관계: https://refactoring.guru/design-patterns/decorator - 장식자(Decorator) 아마 한번쯤은 들어봤을법한 랩퍼(Wrapper) 라고도 불리우는 패턴이다. 객체에 동적으로 새로운 책임을 추가할 수 있게 한다. 기능을 추가하려면 서브 클래스를 생성하는것보다 융통성 있는 방법을 제공한다. - 시나리오 GUI 툴킷이 있다고 가정해보자. 모든 사용자 UI 요소에는 필요 없지만, 어떤 특정 사용자 UI 요소에만 스크롤링이나 테두리 같은 속성을 추가할 필요가 있다고 해보자. Text 를 출력하는 서비스를 제공하는 TextView 클래스가 있다고 가정하자. 이 TextView에 스크롤 기능이나 두꺼운 테두리가 필요하다면.. 2021. 5. 11. UML - 협력 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-uml-collaboration-diagram/ - 협력(Collaborations) 경매에는 한 명의 판매자와 여러 명의 구매자들, 많은 상품들 그리고 부르는 가격이 있다. 위의 다이어그램은 이런 요소들을 클래스 다이어그램으로 나타낸것이다. 클래스다이어 그램에서 구매자나 부르는 가격등을 클래스라고 부르지만 협력에서는 다른 이름으로 부른다. 협력 다이어그램의 요소를 하나씩 살펴보자. 경매 협력(Collaboration): 점선의 타원으로 표시된 부분이다. 역할(role): 구매자, 부르.. 2021. 5. 9. 구조 패턴 - 복합체(Composite) - 참조: GoF의 디자인 패턴 - Composite pattern 안전성: https://en.wikipedia.org/wiki/Composite_pattern#Java - 복합체(Composite) 패턴 부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리구조를 형성한다. 개별객체와 복합객체를 동일하게 다룰 수 있도록 한다. - 시나리오 PPT 문서를 작성하다보면 작은 요소들을(예를 들면 선, 텍스트, 도형들) 하나의 큰 요소로 만들고 난 후, 이를 수월하게 다루기 위해서 그룹화(Grouping)를 할때가 있다. 그룹화를 하면 한 번의 클릭으로 여러 요소들을 한꺼번에 선택하여 작업이 훨씬 수월하다. 작은 요소들을 클래스로 이 작은 요소들이 모인것을 컨테이너라고 할 때, 이를 코드로 구현하려면 해당 .. 2021. 5. 6. UML - 컴포넌트 다이어그램 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - Do Components Exist: http://wiki.c2.com/?DoComponentsExist - 컴포넌트 다이어그램(Component diagram) 컴포넌트들은 구현하는 인터페이스와 필요로 하는 인터페이스를 통해서 서로 연결된다. 앞에서 사용한적이 있는 공-소켓 표기법을 사용하며, 복합 구조 다이어그램을 사용해서 컴포넌트를 분해할 수도 있다. 위의 컴포넌트 다이어그램에서 Till 은 sales message 인터페이스를 통하여 Sales Server 에 연결한다. Till은 Sales message 인터페이스를 사용하고(Till -> Sales message, Dependecy), Transaction P.. 2021. 5. 6. UML - 복합 구조(Composite structure) - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-composite-structure-diagram/ - 복합 구조(Composite Structure) UML2 에서는 클래스를 계층적인 내부 구조로 분해할 수 있다. 내부 구조로 분해한다는것은 복잡한 객체를 여러 개의 부분으로 나눌 수 있도록 해준다는 의미가 된다. TV 뷰어 클래스가 특정 인터페이스를 필요로 하는 상황을 생각해보자. 이때 공-소켓 표기법과 인터페이스의 리스트를 기록하는 방법 2가지가 있는데 StarUML 5.0 에서는 공-소켓 표기법을 지원하고 있으니 공-소켓 표기법.. 2021. 5. 5. 구조 패턴 - 가교(Bridge) - 참조: GoF의 디자인 패턴 - 가교(Bridge) 패턴 가교(Bridge) 패턴은 다른 이름으로 핸들/구현부(Handle/Body) 라고도 불리우며, 구현부에서 추상적인 부분을 을 분리하여 독립적으로 다양성을 가질 수 있도록 한다. - 시나리오 보통 하나의 추상적 개념에 대해 여러 가지 구현을 해야할 때, 대부분 상속을 통해 처리한다. 코드에서 추상적인 개념을 인터페이스로 정의하고, 클래스들이 이를 구현하게 처리하는 방식일것이다. 상속은 잘 사용하면 좋은 기법이 되지만 구현부가 추상적 개념에 강하게 종속된다. 추상적 개념과 구현을 분리해서 재사용이 불가능해지거나 확장하기가 쉽지 않다. 이식성이 있는 Window를 추상적 개념으로 보고 이를 UI 툴킷을 써서 구현하는 예를 생각해보자. 이 Window.. 2021. 5. 1. 구조 패턴 - 적응자(Adapter) - 참조: GoF의 디자인 패턴 - 적응자(Adapter) 패턴 적응자 패턴은 다른 이름으로 래퍼(Wrapper)라고 불리우는 패턴이다. 클래스의 인터페이스를 사용자가 원하는 형태로 변환(적응)시킨다. 이렇게 변환(적응)을 통해서 일치하지 않는 인터페이스를 갖는 클래스들이 함께 동작할 수 있도록 한다. - 시나리오 그림 편집기가 있다고 가정해보자. 그림판의 주요한 추상적 개념은 그래픽 객체들이다. 이런 공통 그래픽 요소에 대한 인터페이스는 추상 클래스인 Shape 에 정의되어 있다. 그리고 각 그래픽 요소인 선과 다각형은 각각 LineShape, PolygonShape 과 같은 클래스로 개발해야 한다. 위와 같이 간단한 도형도 있겠지만 TextShape는 텍스트처리시 버퍼관리와 같이 다른 그래픽 요소에 .. 2021. 4. 23. UML - 커뮤니케이션 다이어그램 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 커뮤니케이션 다이어그램 교류 다이어그램의 일종으로 요소들 간의 데이터 연결을 강조한다. 시퀀스 다이어그램은 모든 참여 요소들의 생명선을 있고, 수직방향으로 메시지의 순서를 표시한다. 반면 커뮤니케이션 다이어그램에서는 번호를 붙여 메시지의 순서를 나타낸다. 위 그림은 중앙 집중 제어방식의 커뮤니케이션 다이어그램이다. 커뮤니케이션 다이어그램을 통해서 참여 요소들이 어떻게 연결되었는지 보여줄 수 있다. 연관에서의 링크 뿐만 아니라 흐름상에서 발생하는 임시 링크(transient link)도 나타낼 수 있다. 주문에서 상품을 보면 이라고 되어있는데, 이는 지역 변수를 의미한다. 나 도 있는데 UML2 에서는 없어졌지만 유용하므.. 2021. 4. 21. 이전 1 ··· 21 22 23 24 25 26 27 ··· 34 다음