본문 바로가기

필수 개발지식36

[Design Pattern] 메멘토 패턴 (Memento) [Design Pattern] 메멘토 패턴 (Memento) ✅행동패턴의 메멘토(Memento)에 대해 알아보자! 행동패턴(Behavioral Patterns)이란? 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴이다. 한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하며 객체 사이의 결합도 최소화에 중점을 둔다. 패턴을 주로 클래스에 적용하는지 아니면 객체에 적용하는지에 따라 구분되는 패턴이다. 메멘토(Memento)패턴이란? 메멘토패턴은 객체 내부의 상태를 외부에 저장을 하고 저장된 상태를 다시 복원하고자 할 때에 사용하는 패턴이다. 메멘토패턴을 사용함으로써 객체의 모든 정보를 외부로 노출시키지 않고 캡슐화를 지킬 수 있다. 메멘토 패턴은 세 가지 주요 구성 요소로 구성되는데.. 2023. 5. 15.
3계층구조에 Access/Refresh Token 적용하기! 3계층구조에 Access/Refresh Token 적용하기! ✅코드방향잡기 로그인 시 Access/Refresh Token 를 생성하고 사용자 인증미들웨어에도 적용할 예정이다. Access Token과 다르게 Refresh Token은 저장될 DB가 필요하고, DB에 저장하는 함수도 생성해야한다. 토큰을 발급받고 cookie에 담는 과정을 3계층 어디에 적용할 것인지 생각해보자. 토큰발급-Service, 토큰담기-Controller, Refresh토큰DB에저장하기-Repository ✅코드만들기 1. RToken을 저장해줄 table을 만들어준다! migration파일 'use strict'; /** @type {import('sequelize-cli').Migration} */ module.export.. 2023. 5. 15.
[Design Pattern] 퍼사드 패턴 (Facade) [Design Pattern] 퍼사드 패턴 (Facade) ✅구조패턴의 퍼사드(Facade)에 대해 알아보자! 퍼사드패턴이란? 결론부터 말하면 복잡하고 다양한 서브시스템을 인터페이스로 감싸 간단하게 만드는 패턴!! facade는 "건물의정면"을 의미하는 단어로 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미한다. 예를 들어, 우리가 쇼핑몰에서 옷을 사기 위해 접하는건 핸드폰화면뿐이다. 옷을 구매하는 작업이 완료되는데 뒷면에서 이루어지는 수많은 작업들은 우리가 알 필요도 없고, 판매자는 그 과정을 소비자에게 알게해서도 안된다. 아래와 같이 고객이 '옷을 구매'하는 작업을 요청하면 facade가 옷을 구매하기 위해 사용하는 서브 클래스들 사이의 간단한 통.. 2023. 5. 12.
[Design Pattern] 빌더패턴 (Builder) ✅디자인패턴이 뭘까? " 디자인 패턴(Design Pattern)은 소프트웨어 디자인에서 주어진 컨텍스트 내에서 일반적으로 발생하는 문제에 대한 재사용 가능한 일반적인 솔루션" 디자인패턴은 왜 쓰이나요? 유연성 : 디자인 패턴을 사용하면 코드가 유연해지며 개체가 서로 느슨하게 결합되어 코드를 쉽게 변경할 수 있으므로 올바른 수준의 추상화를 제공하는데 도움이 된다. 재사용성 : 느슨하게 결합되고 결합된 객체 및 클래스는 코드를 더 재사용할 수 있게 만들며 이러한 종류의 코드는 고도로 결합된 코드에 비해 테스트 하기 쉽다. 공유 어휘 : 공유 어휘를 사용하면 코드와 생각을 다른 팀원과 쉽게 공유할 수 있으며 코드와 관련된 팀원 간의 이해를 높일 수 있다. 모범 사례 캡처 : 이미 시도되고 검증된 해결책이기에.. 2023. 5. 10.