2023/11 10

[헤드퍼스트 디자인패턴] chapter10.상태 패턴

상태 패턴 - 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있음 vs 전략 패턴 - 상태 패턴을 사용할 때는 상태 객체의 일련의 행동이 캡슐화된다 - 전략 패턴을 사용할때는 일반적으로 클라이언트가 context 객체에게 어떤 전략 객체를 사용할지 지정해준다. https://www.yes24.com/Product/Goods/108192370 이 책 10장을 읽고 정리한 글입니다.

개발/꿀팁 2023.11.27

[헤드퍼스트 디자인패턴] chapter9. 컬렉션 잘 관리하기 (반복자 패턴 Iterator pattern, 단일 역할 원칙, 컴포지트 패턴)

반복자 패턴 iterator pattern 1. 정의 - 컬렉션의 구현 방법을 노출하지 안으면서 집합체 내의 모든 항목에 접근하는 방법을 제공 단일 역할 원칙 1. 정의 : 어떤 클래스가 바뀌는 이유는 하나뿐이어야 한다. 2. 응집도 - 응집도란 한 클래스 또는 모듈이 특정 목적이나 역할을 얼마나 일관되게 지원하는지 나타내는 척도로, - 응집도가 높다는 것은 서로 연관된 기능이 묶여 있다는 것을 - 응집도가 낮다는 것은 서로 상관 없는 기능들이 묶여 있다는 것을 뜻함 컴포지트 패턴 1. 정의 - 객체를 트리구조로 구성해서 부분-전체 계층구조를 구현 - 컴포지트 패턴을 사용하면 클라이언트에서 개별 객체와 복합 객체를 똑같은 방법으로 다룰 수 있음 https://www.yes24.com/Product/Goo..

개발/꿀팁 2023.11.27

[스프링 퀵스타트] Day1 - chapter2. 프레임워크 개요 (v2023)

2.1.3 자바 기반의 프레임워크 처리 영역프레임워크 PresentationStrutsStruts 프레임워크는 UI Layer에 중점을 두고 개발된 MVC(Model View Controller) 프레임워크이다.Spring(MVC)Struts와 동일하게 MVC 아키텍처를 제공하는 UI Layer 프레임워크이 다. 하지만 Struts처럼 독립된 프레임워크는 아니고 Spring 프레임워크 에 포함되어 있다. BusinessSpring(IoC, AOP)Spring은 컨테이너 성격을 가지는 프레임워크이다. Spring의 IoC와 AOP 모듈을 이용하여 Spring 컨테이너에서 동작하는 엔터프라이즈 비 즈니스 컴포넌트를 개발할 수 있다.PersistenceHibernateorJPAHibernate는 완벽한 ORM..

[헤드퍼스트 디자인패턴] chapter8. 템플릿 메소드 패턴 (템플릿 메소드패턴, 할리우드원칙)

템플릿 메소드 패턴 1. 정의 - 알고리즘의 골격을 정의 - 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브 클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의 가능 할리우드 원칙 (hollywood principle) 1. 정의 - 저수준 구성 요소가 시스템에 접속할 수는 있지만 언제 어떻게 그 구성 요소를 사용할지는 고수준 구성 요소가 결정한다. - 즉, 고수준 구성 요소가 저수준 구성 요소에게 '먼저 연락하지 마세요. 제가 먼저 연락드리겠습니다'와 동일하다. 2. 할리우드 원칙 vs 의존성 뒤집기 원칙 - 의존성 뒤집기 원칙 : 될 수 있으면 구상 클래스 사용 줄이고 추상화된 것 사용해야 한다는 원칙 - 할리우드 원칙 : 저수준 구성 ..

개발/꿀팁 2023.11.14

[헤드퍼스트 디자인패턴] chapter7.어댑터 패턴과 퍼사드 패턴 (어댑터 패턴, 퍼사드 패턴, 최소 지식 원칙, 데메테르 법칙)

어댑터 패턴 1.정의 - 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환한다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와준다. 2. 특징 - 객체 어댑터와 클래스 어댑터가 있다. 퍼사드 패턴 1. 정의 - 서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어준다. 또한 고수준 인터페이스도 정의하므로 서브시스템을 더 편리하게 사용할 수 있다. cf) 데코레이터 vs 어댑터 vs 퍼사드 - 데코레이터 : 인터페이스는 바꾸지 않고 책임(기능)만 추가 - 어댑터 : 하나의 인터페이스를 다른 인터페이스로 변환 - 퍼사드 : 인터페이스를 간단하게 변경 최소 지식 원칙 (principle of least knowlege) = 데메테르의 법칙과도 동일한 ..

개발/꿀팁 2023.11.13

[leetcode][Medium][Stack] 739. Daily Temperatures 풀이, 해설 (python)

https://leetcode.com/problems/daily-temperatures/ Daily Temperatures - LeetCode Can you solve this real interview question? Daily Temperatures - Given an array of integers temperatures represents the daily temperatures, return an array answer such that answer[i] is the number of days you have to wait after the ith day to get a warmer leetcode.com 1차 풀이 class Solution(object): def dailyTemperatur..

[leetcode][Medium][Stack] 22. Generate Parentheses 힌트, 풀이, 해설 (python)

https://leetcode.com/problems/generate-parentheses/ Generate Parentheses - LeetCode Can you solve this real interview question? Generate Parentheses - Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. Example 1: Input: n = 3 Output: ["((()))","(()())","(())()","()(())","()()()"] Exa leetcode.com 힌트 https://www.youtube.com/watch?v=s9fokUqJ76A ..

[leetcode][Medium][Stack] 150. Evaluate Reverse Polish Notation 풀이, 해설 (python)

https://leetcode.com/problems/evaluate-reverse-polish-notation/ Evaluate Reverse Polish Notation - LeetCode Can you solve this real interview question? Evaluate Reverse Polish Notation - You are given an array of strings tokens that represents an arithmetic expression in a Reverse Polish Notation [http://en.wikipedia.org/wiki/Reverse_Polish_notation]. Evaluate t leetcode.com 1차 풀이 class Solution..

[leetcode][Medium][Stack] 155. Min Stack 풀이, 해설 (python)

https://leetcode.com/problems/min-stack/ Min Stack - LeetCode Can you solve this real interview question? Min Stack - Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. Implement the MinStack class: * MinStack() initializes the stack object. * void push(int val) pushes t leetcode.com 1차 풀이 가벼운 스택 문제일거라 생각했는데, getMin 부분에서 어떻게 O(1)을 만들까 잠깐 고민했다. 그러다가 ..

[leetcode][Easy][Stack] 20. Valid Parentheses 풀이, 해설 (python)

https://leetcode.com/problems/valid-parentheses/ Valid Parentheses - LeetCode Can you solve this real interview question? Valid Parentheses - Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: 1. Open brackets must be closed by the sam leetcode.com 1차 풀이 단순한 스택 문제라 간단히 풀었지만, 조건이 추가가 되면서 좀 복잡한 풀이가 되..

반응형