CS 지식/디자인패턴

정의주체가 어떤 객체의 상태변화를 관찰하다가 상태변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 패턴.예시유튜브 채널의 알림을 생각해보면 유튜브 채널이 변화를 감지해야 하는 객체이고 구독자들이 옵저버들이라고 볼 수 있다 출처CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 - 큰돌https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95/dashboard
정의전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴.대표적인 예시로 node.js에서 로그인할 때 널리 쓰는 모듈인 passport를 보면 여러 전략을 갈아끼는 방식으로 로그인을 쉽게 구현할 수 있다. 출처CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 - 큰돌https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95/dashboard
DI의존성주입(DI, Dependency Injection)메인 모듈이 직접 다른 하위 모듈에 대한 의존성을 주는 것이 아닌 중간에 의존성 주입자(dependency injector)를 두어서 간접적으로 의존성을 주입하는 방식이다.이를 통해 메인 모듈과 하위 모듈간의 의존성을 느슨하게 만들 수 있다.DIP의존관계역전원칙(DIP, Dependency inversion Principle)상위 모듈은 하위 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다.추상화는 세부사항에 의존해서는 안 된다. 세부 사항은 추상화에 따라 달라져야 한다.장점모듈을 쉽게 교체할 수 있는 구조단위 테스팅, 마이그레이션이 쉬워진다.애플리케이션 의존성 방향이 일관되어 코드를 추론하기 쉬워진다.단점결론적으로 모듈 수가 더 많이..
정의상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴.상위 클래스에서는 객체 생성방식에 대해 알 필요가 없어서 유연성을 갖게 되고 객체 생성 로직은 하위 클래스에서만 관리되기 때문에 유지보수성이 향상된다.예시enum CoffeeType { LATTE, ESPRESSO}abstract class Coffee { protected String name; public String getName() { return name; }}class Latte extends Coffee { public Latte() { name = "latte"; }}class Espresso extends Coffee { public Espresso..
1. 정의- 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. 2. 장점- 하나의 인스턴스를 다른 모듈이 공유하여 사용하기 때문에 인스턴스 생성비용이 줄어든다.- 따라서 인스턴스생성에 많은 비용이 드는 I/O 바운드 작업에 많이 사용한다. (네트워크, DB 연결, File system 등) 3. 단점- 의존성이 높아지는 문제가 있다.- TDD를 방해하는 문제가 있다.- 단위 테스트 시에는 각 테스트가 독립적이어야 하는데 싱글톤 패턴으로 만든 인스턴스를 공유하기 때문에 각 테스트마다 독립적인 인스턴스를 만들기 어렵다. 4. 싱글톤 패턴을 구현하는 방법단순한 메서드 호출public class Singleton { private static Singleton instance; private Singl..
1. 정의- 디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것.- 라이브러리, 프레임워크를 만드는 데 기초적인 원리가 된다. 2. 대분류- 생성패턴  - 객체 생성 방법이 들어간 디자인패턴  - 싱글톤, 팩토리, 추상팩토리, 빌더, 프로토타입 패턴이 있다.- 구조패턴  - 객체, 클래스 등으로 큰 구조를 만들 때 유연하고 효율적으로 만드는 방법  - 프록시, 어댑터, 브리지, 복합체, 데코레이터, 퍼사드, 플라이웨이트 패턴이 있다.- 행동패턴  - 객체나 클래스 간의 알고리즘, 책임 할당에 관한 패턴.  - 이터레이터, 옵저버, 전략, 책임연쇄, 커맨드, 중재자, 메멘토, 상태, 템플릿메서드, 비지터 패턴이..
Purewater
'CS 지식/디자인패턴' 카테고리의 글 목록