본문 바로가기

전체 글31

7. Decorator Pattern ▣ What is Decorator Pattern? Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality. 데코레이터 패턴은 객체에 추가적인 책임을 동적으로 부여하여, 상속을 사용하지 않고도 유연하고 융통성있는 기능 확장을 가능하게 하는 패턴입니다. 즉, 우리가 클래스를 설계하다보면, 상속 관계를 정의하기가 어렵거나 너무 많은 상속 관계가 발생하는 경우가 있을 수 있는데, 데코레이터 패턴은 이런 문제를 해결하기 위해서 상속이 아닌 연관을 통해 Runtime에 필요한 기능을 추가할 수 있도록 하는 패턴.. 2023. 11. 28.
6. Iterator Pattern ▣ What is Iterator Pattern? Provides a way to access the elements of an aggregate object sequentially without exposing its underlying representation Iterator Pattern(반복자 패턴)은 '여러 요소를 담고 있는 객체(배열, 리스트, 맵 등)'의 내부 구조에 대한 이해 없이, 각 요소를 순서대로 접근하고 사용할 수 있는 방법을 제공하는 것입니다. 예를 들어 우리가 아래와 같은 코드를 작성했다고 해봅시다. import java.util.ArrayList; public class Main { public static void main(String[] args) { int[] arr =.. 2023. 11. 14.
5. Singleton Pattern ▣ What is Singleton Pattern? Ensure a class only has one instance, and provide a global point of access to it. 싱글턴 패턴은 특정 클래스에 대해서 한 개의 인스턴스만을 만들 수 있도록 하고, 어디서나 생성된 인스턴스에 접근할 수 있도록 하는 패턴입니다. 개인적으로는 디자인 패턴들 중에서 가장 단순하면서도 쉬운 패턴이라고 생각합니다. 이렇게 싱글턴 패턴으로 만드는 이유는, 여러 객체가 생성되면 상태 관리에 있어 어려움을 겪는 경우가 발생하기 때문입니다. 따라서 객체 생성자를 중앙에서 관리하여 하나의 클래스에 대해 하나의 객체만 생성될 수 있도록 하여 객체의 상태를 일관되게 유지할 수 있습니다. 고전적인 싱글턴 패턴 구현.. 2023. 11. 13.
4. Observer Pattern ▣ What is Observer Pattern? Define a one-to-many dependency between objects so that when one object changes state, all its dependent are notified and updated automatically. 옵저버 패턴은 객체간 1:多 의존 관계를 정의하여, 한 개의 객체 상태가 변경될 때, 그 객체와 의존 관계에 있는 모든 객체들이 자동으로 알림을 받고 상태를 갱신하는 패턴입니다. 옵저버 패턴은 일종의 push서비스와 비슷하다고 할 수 있습니다. 우리가 어떤 유튜브 채널을 구독했을 때, 그 유튜브에 새로운 영상이 업로드 되었는지 아닌지 계속 들어가서 확인하는 것은 번거롭겠죠? 그럴 때, 우리는 유튜브 .. 2023. 11. 7.
(D & C) 백준 #1780 : 종이의 개수 문제 링크 : https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net C/C++ 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 #include int paper[2187][2187]; int count_minus = 0; int count_ze.. 2023. 10. 31.
3. Strategy Pattern 첫 번째로 알아볼 디자인 패턴은 행위 패턴의 일종인 Strategy Pattern(스트래티지 패턴)입니다. ▣ What is Strategy Pattern? Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it 스트래티지 패턴은 같은 종류의 작업을 하는 알고리즘을 정의하고, 각 알고리즘을 캡슐화하며, 각 알고리즘들을 서로 바꿔 사용할 수 있도록 하는 디자인 패턴입니다. 다시 말해서, 알고리즘을 사용하는 클라이언트로부터 독립적으로 알고리즘을 바꿔서 적용시킬 수 있도록 합니다. 위와 같.. 2023. 10. 29.