본문 바로가기
IT/Knowledge

객체지향 디자인 패턴 심화 정리 part.1

by 성준하이 2022. 3. 11.
반응형

포스팅을 읽기 전에 아래 참고 포스팅에서 간단한 디자인패턴에 대한 정의와 종류에 대해서 읽고 오면 도움이 될것이다.

그리고 이번 포스팅에서는 좀더 심화된 내용을 다뤄볼 것이다.

 

저번 포스팅에서 있던 내용은 중복으로 설명이 되는 부분도 있으나 좀더 자세하게 심화된 내용으로 설명을 할것이다.

part.1에서는

  • singleton
  • strategy
  • state
  • command

패턴 들에 대해서 설명을 해본다.

 

singleton 패턴

소프트웨어를 만들때 클래스의 객체가 하나만 만들어 져야할 상황이 있다.

예를들어 페이지에서 셋팅에 다크모드로 설정을 해두면 어느 페이지로 이동을 하든 다크모드는 유지가 되어야한다.

이럴 경우 반드시 하나의 셋팅 객체만 만들어 져야한다.

 

일반적으로 페이지에서 클래스 호출할 경우를 보면

여러개의 클래스 안에 settings 클래스를 호출할때 각각 페이지마다 다른 객체가 생성이 되는데

이 문제를 해결하기 위해 singleton이 있는것이다.

객체를 private 형태로 생성을 하며 정적변수를 만들어서 사용을 하게 되고 이 싱글톤 패턴은 객체를 무분별하게 많이 생성하는것을 막기에 메모리 관리에도 효율적인 패턴이다.

 

strategy 패턴

전략패턴이라고도 불리며 검색을 사용할 경우 많이 사용이 된다.

예를들어 검색을 할때 전체 검색도 되지만

이름검색, 번호검색, 주소검색 등 검색이 동작하는 방식 똑같지만 선택되는 검색 종류에 따라 값만 변경이 되며 

이 말을 좀더 프로그래밍 하게 말을 한다면 모드가 변경될때마다 변수값이 바뀌어서 실행이 되게 된다.

메서드를 interface로 구현을 한 후에 실행되는 메서드에서 인터페이스를 가져와서 각각 상황에 맞게 실행을 시키는 방식이라고 생각하면 된다.

 

state 패턴

strategy 패턴과는 비슷하나 strategy패턴은 정해져있는 동작들 안에서 실행이 일어나는데

state패턴은 버튼을 누르면 어떤 동작이 행해지는것은 맞지만 그 현재상태에 따라 행동이 다르게 이루어지는것을 말한다.

예를들어 조명이 버튼을 누르면 꺼져있을때는 켜지고, 같은 버튼을 켜져있을때 누르면 꺼지는 버튼이라고 생각하면 이해하기 쉽다.

 

command 패턴

커맨드패턴은 정말 광범위 하다.

구현에 따라서 strategy 패턴이나 state패턴 처럼 구현을 할수도 있지만 차별화된 다른 방식을 설명해주면

로봇을 구현하듯이

앞으로 50m간다 -> 왼쪽으로 꺽는다 -> 앞으로 20m를 간다 -> 문을 연다

이런 식으로 로봇이 할일을 순서대로 구현해두듯이 작성을 할수도 있다.

이럴 경우 앞으로 가거나 꺽는것이나 문을 열기 등등 동작의 메서드를 모두 상속을 받아야하기에 interface 말고 추상 클래스로 구현을 하여서 여러 동작을 상속 받을수 있도록 정의를 하면서 사용을 할수 있다.

이 패턴을 잘 이해하면 반복 작업이나 생산 툴 같은 프로그램을 더욱 효율적으로 구현을 할수 있게 된다.


참고 포스팅

https://thenicesj.tistory.com/87

 

디자인패턴 정의와 종류

소프트웨어 개발을 할때 사용되는 디자인 패턴이란 과거에 소프트웨어 개발 과정에서 발견된 설계 노하우를 축적하여 그 방법에 이름이 붙여서 이후에 재사용 하기 좋은 형태로 특정 규약을 만

thenicesj.tistory.com

 

반응형

댓글