본문 바로가기

CS/디자인패턴12

[CS] 전략 패턴과 의존성 주입의 차이, 컨텍스트 정의 전략 패턴, 의존성 주입 공통점 - 모두 무언가를 쉽게 교체하기 위한 디자인 패턴 차이점 - 전략 패턴: 어떠한 동일한 행동 계약을 기반으로 다양한 구현이 명시되어있는 인터페이스를 만드는 것을 포함 - 의존성 주입 : 단지 일부 동작을 구현하고 의존성을 주입하기만 하는 패턴 컨텍스트 컨텍스트는 2가지 뜻으로 쓰임 1. 어떤 종류의 상태, 환경을 캡슐화한 것을 말함. 2. 작업d이 중단 되고 나중에 같은 지점에서 계속 될 수 있도록 저장하는 최소 데이터 집합.(ex 컨텍스트 스위칭) 컨텍스트는 context와 contextual information으로 크게 나눠 지는데 다음과 같음 1. 병원에 가면 “이름”과 주민등록번호 앞자리를 말해야함. 여기서 “병원에 방문”하는 context에서 여러분의 이름은 c.. 2023. 9. 25.
[CS] flux 패턴 flux 패턴 flux패턴은 단방향으로 데이터 흐름을 관리하는 디자인패턴 ex) 페이스북은 “읽은 표시(mark seen)”에 대한 기능장애를 겪었습니다. 어떤 페이지에서 메시지를 읽었는데 다른 페이지에서는 메시지가 안 읽었다고 뜨는 것이죠. 이는 모델(M, model)과 뷰(view)의 관계가 복잡해지니 버그를 수정하기도 데이터흐름을 알아보기 어려운 문제였습니다. 즉, 뷰에서 일어난 것이 모델에 영향을 끼치기도 그 반대도 영향을 미치는 로직도 있는 상황이 발생하여 데이터를 일관성 있게 뷰에 공유하기가 어려웠음. 이를 위한 해결방법으로 데이터가 “한방향”으로만 흐르게 flux 패턴이 등장 flux패턴은 action, dispatcher, store, view 라는 계층으로 구성 flux 패턴의 구조 Ac.. 2023. 9. 24.
[CS] MVC 패턴, MVP 패턴, MVVM 패턴 MVC 패턴 MVC패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴 모델 (Model) 모델(model)은 애플리케이션의 데이터인 데이터베이스, 상수, 변수 등을 뜻 함 뷰에서 데이터를 생성하거나 수정할 때 컨트롤러를 통해 모델이 생성 또는 업데이트 됨. 예를 들어 사용자가 네모박스에 글자를 적는다고 한다면, 이 때 모델은 네모박스의 크기정보, 글자내용, 글자의 위치, 글자의 포맷 정보 등이 됨 뷰 (View) 뷰(view)는 inputbox, checkbox, textarea 등 사용자 인터페이스 요소를 나타내며 모델을 기반으로 사용자가 볼 수 있는 화면을 뜻함. 모델이 가지고 있는 정보를 따로 저장하지 않아야 하며 변경이 일어나면 컨트롤러에 이를 전달해야.. 2023. 9. 19.
[CS] 프록시 패턴 프록시 패턴 프록시패턴이란 객체가 어떤 대상 객체에 접근하기 전, 그 접근에 대한 흐름을 가로채서 해당 접근을 필터링하거나 수정하는 등의 역할을 하는 계층이 있는 디자인패턴 프록시 서버 서버 앞단에 두어 캐싱, 로깅 등에 활용하는 프록시서버가 대표적인 예 function createReactiveObject(target, callback) { const proxy = new Proxy(target, { set(obj, prop, value) { if (value !== obj[prop]) { const prev = obj[prop]; obj[prop] = value; callback(`${prop}가 [${prev}] >> [${value}] 로 변경되었습니다`); } return true; }, });.. 2023. 9. 18.
[CS] 옵저버 패턴 옵저버 패턴 옵저버패턴이란 주체가 어떤 객체(subject)의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려 주는 디자인 패턴 트위터의 메인 로직, MVC 패턴에도 적용 import java.util.ArrayList; import java.util.List; interface Subject { public void register(Observer obj); public void unregister(Observer obj); public void notifyObservers(); public Object getUpdate(Observer obj); } interface Observer { public void update(); } class.. 2023. 9. 6.
[CS] 전략 패턴 전략 패턴 전략 패턴이란 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 디자인 패턴 import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; interface PaymentStrategy { public void pay(int amount); } class KAKAOCardStrategy implements PaymentStrategy { private String name; private String cardNumber; private String cvv; private String dateOfExpiry; public KAKAOCardStrategy(String.. 2023. 9. 5.