일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발
- jpa
- Sprign
- 디자인패턴
- 집합관계
- 클래스다이어그램
- 객체지향
- java
- 웹
- 다자인패턴
- 의존관계
- 웹개발
- 프로그래밍
- spring data jpa
- 봇
- 연관관계
- 서버개발
- redis
- 자바
- backend
- 코딩
- OOP
- cache
- Spring
- caching
- 백엔드
- 전략패턴
- IT
- Programming
- Web
- Today
- Total
목록도서/JAVA 객체지향 디자인패턴 (7)
괴발나라

오늘은 커맨드 패턴에 대해 알아보겠습니다. 커맨드 패턴은 이벤트를 발생시키는 객체(Invoker)와 그 이벤트를 받는 객체(Reciever)로 구성되어 있습니다. 가령 어떤 버튼을 클릭했을때 전등이 켜지거나 꺼진다면, 그 버튼은 "클릭됨" 이라는 이벤트를 발생시키고 전등은 그 이벤트를 수신하여 켜지거나 꺼지겠죠? 여기서 버튼은 Invoker, 전등은 Reciever가 됩니다. 커맨드 패턴은 이런 기능을 SOLID원칙을 지키며 구현할 수 있도록 해줍니다. 오공으로 미니언 처치하기 LOL(리그오브레전드)이라는 게임을 아시나요? LOL에서는 게이머가 한 챔피언(캐릭터)을 골라 미니언(적)을 처치하며 챔피언의 레벨을 올릴 수 있습니다. 챔피언이 Invoker이고, 미니언은 Reciever라고 해봅시다. 챔피언이..

먼저 스테이트 패턴의 "스테이트"가 뭔지 알아봅시다. 스테이트 패턴을 이용하면, 여러 상태에 따라 기능을 손쉽게 변경할 수 있습니다! 상태가 뭘까요? 상태가 뭘까 🤔 저같은 경우에, 배가 고픈 "상태"면 밥을 먹어야 합니다. 졸린 "상태"라면 낮잠을 좀 자야됩니다. 화가 난 "상태"라면 무언가를 때려 부숴야 합니다. ❤ 객체 지향 시스템을 이루고 있는 객체들도 각각 자신만의 상태를 갖고 있습니다. 그리고 저처럼, 객체들도 자신의 상태에 따라 다른 행위를 할 때도 있습니다. 슈팅 게임 캐릭터를 만들어보자! 🔫 혹시 카운터 스트라이크라는 슈팅 게임을 아시나요? 저는 1.6버전 때부터 카운터 스트라이크를 즐겼습니다. 게이머는 원하는 총기를 구입한 뒤, 적군을 구입한 총기로 쓰러뜨려야 합니다. 총기는 각각 장단..

오늘은 전략 패턴에 대해 알아보겠습니다. 위키백과의 전략 패턴에 대한 설명은 다음과 같습니다. "The strategy pattern is a behavioral software design pattern that enables selecting an algorithm at runtime." 대충 알고리즘(기능)을 런타임 시점(실행 중)에 동적으로 선택할 수 있게 해준다고 합니다. 이게 무슨 소리일까요? 설명하기 어렵네요. 바로 예시를 봅시다. ✈ 비행기 만들기 ✈ 1942 라는 게임을 아시나요? 게임 화면을 보시면 바로 아실 겁니다. 게이머는 위 화면 하단에 있는 작은 비행기를 조종합니다. 비행기로 적들을 공격하며 물리치죠. 그러면 이 비행기를 클래스로 만들어 봅시다! public class Game1..

나는 객체 지향 시스템을 개발하는 일을 한다. 그런데 일을 시작한지 얼마 되지 않아서 그런지, 아니면 내가 머리가 나쁜건지, 아니면 다들 그런건지 단 하루라도 난관에 부딪치지 않은 적이 없다. 머리를 쥐어짜며 문제를 어떻게든 해결해도 뭔지 모를 찝찝함이 남아있을 때가 있다. 디자인 패턴들을 마스터했다면, 훨씬 빠르게 확장성있는 코드를 작성했을텐데.... 디자인 패턴 디자인 패턴이 뭘까? JAVA 객체 지향 디자인 패턴 이라는 책에서는 디자인 패턴을 다음과 같이 소개한다. 디자인 패턴은 우리 주변에서 자주 반복해서 발생하는 문제와 그 문제를 해결하는 핵심을 기술해 동일한 일을 두번 다시 하지 않고 해결할 수 있도록 한다 그러니까, 쉽게 말하면 어떤 유형의 문제를 해결할 수 있게 도와주는 도구다. 나는 수능..

객체지향 시스템은 여러개의 클래스가 서로 긴밀한 관계를 맺으며 기능을 수행한다 이번에는 객체지향 시스템을 이룰때 클래스들끼리 맺는 관계 중 집합 관계에 대해 알아보자. 집합 관계 집합 관계는 UML 연관관계의 특별한 경우로 전체와 부분의 관계를 명확하게 명시하고자 할 때 사용한다. 연관관계는 한 클래스가 다른 클래스의 기능을 사용하는, 그리고 두 클래스의 관계가 오랫동안 유지되는 관계를 말한다. 잘 이해되지 않는다면 지난 번에 작성한 연관관계와 의존관계의 차이를 읽고 오면 좋을 것 같다. 집합관계는 다시 두개의 관계로 나뉜다. 집약 관계 (aggregation) 집약 관계는 한 객체가 다른 객체를 포함하는 것을 나타낸다. 부분 객체를 다른 객체와 공유할 수 있다. 전체 객체의 라이프타임과 부분 객체의 라..

객체 지향 시스템 안에서는 여러 클래스들이 서로 긴밀한 관계를 맺으며 기능을 수행한다.클래스들은 다양한 방법으로 다른 클래스들과 관계를 맺는다.이 관계들의 종류에는 여러가지가 있는데,이번에는 비슷하면서도 다른 연관 관계와 의존 관계의 차이에 대해서 설명한다.연관관계와 의존관계의 공통점이 두 관계는 모두 한 클래스가 다른 클래스의 기능을 사용할 때를 나타낸다.이해가 잘 되지 않는다면, 실세계의 예시를 통해 이해해보자!당신은 친구에게 문자를 보내고 싶다.친구에게 문자를 보내려면 핸드폰을 사용해야 한다.구체적으로는 핸드폰의 문자 전송 기능을 사용해야 한다.당신은 핸드폰과 연관관계 혹은 의존관계를 맺는 것이다.당신이 친구에게 문자를 보내는 상황을 코드로 작성하면 다음과 같을 것이다.// 당신class Perso..

해당 포스트에는 주관적인 의견과 해석이 담겨있습니다. 내용이 허술하며, 정확하지 않을 수 있습니다. 오류나 다른 의견이 있다면 댓글 꼭꼭 부탁드립니다. 😊 SOLID 원칙이란? SOLID 원칙은 객체 지향 프로그래밍이라는 패러다임 안에서 변경에 용이한 코드를 작성할 때 지켜야할 원칙들이다. SOLID 는 5가지 원칙의 앞글자를 딴 용어다. SRP (Single Responsiblity Principle) - 단일 책임 원칙 OCP (Open Closed Principle) - 개방 폐쇄 원칙 LSP (Liskov Substitution Principle) - 리스코프 치환 원칙 DIP (Dependency Inversion Principle) - 의존 역전 원칙 ISP (Interface Segregat..