티스토리 뷰

CS

디자인패턴과 프로그래밍 패러다임

Game Client Lee Hwanguk 2023. 2. 10. 02:40

#라이브러리와 프레임워크의 차이?  (규칙성, 자유도)

*라이브러리-공통으로 사용될 수 있는 특정한 기능들을 '모듈화'한 것을 의미. 규칙이 없고 프레임워크에 비해 자유로움 

*프레임워크-공통으로 사용될 수 있는 특정한 기능들을 '모듈화'한 것을 의미. 규칙이 있고 라이브러리에 비해 좀 더 엄격함

*모듈화란? (재사용 및 공유 가능한 수준, 기능단위로 분해)

  • 모듈 : 소프트웨어 설계에서 기능단위로 분해하고 추상화 되어 재사용 및 공유 가능한 수준으로 만들어진 단위
  • 모듈화 : 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법

#1.디자인패턴

-프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 혈태로 만들어 놓은 것을 의미

 

1.싱글톤 패턴

-하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. 보통 데이터베이스 연결 모듈에 많이 사용

인스턴스를 생성할 때 드는 비용이 줄어드는 장점, 의존성이 높아지는 단점도 있음(중간에 의존성 주입자를 만드는 방법이있음->디커플링)

 

2.팩토리 패턴

-객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 페턴, 상속관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴. (상위 클래스와 하위 클래스가 분리됨->느슨한 결합, 상위 클래스에서는 인스턴스 생성방식을 알 필요가없음 ->유연성, 객체 로잭이 따로 떼어져 있음 코드 리팩터링 ->유지 보수성 증가)

 

3.전략 패턴(정책 패턴)

-객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 전략이라 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게하는 패턴 (네이버페이,카카오페이 등), *컨텍스트(프로그래밍에서 컨텍스트는 상황,맥락,문맥을 의미, 개발자가 어떤 작업을 완료할때 필요한 모든 관련 정보)

 

4.옵저버 패턴

-주체(객체의 상태 변화를 보고 있는 관찰자)가 어떤 객체(추가 변화 사항이 생기는 객체들)의 상태 변화를 관찰하다가 상태 변화가 있을때 마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴(트위터), 이벤트 기반 시스템에 사용

 

5.프록시 패턴, 프록시 서버

*프록시 패턴-대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 객체 앞단의 인터페이스 역할을 하는 디자인 패턴

*프록시 서버-서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용프로그램을 가르킴

 

6.이터레이터 패턴

-이터레이터를 사용하여 컬렉션의 요소들에 접근하는 디자인 패턴 

*이터레이터(iterator) -반복적으로 하나씩 꺼내어 처리 가능한 컬렉션이나 시퀀서

 

7.노출 모듈 패턴

-즉시 실행 함수를 통해 한정자(private, public) 접근 제어자를 만드는 패턴

*즉시 싱행 함수-함수를 정의하자마자 호출하는 함수

 

8.MVC,MVP,MVVM 패턴

*MVC- Model+View+Contrroller *Model-애플리케이션의 데이터 *View-사용자 인터페이스 요소 모델을 기반으로 사용자가 볼 수 있는 화면 *Contrroller-하나 이상의 모델과 하나 이상의 뷰를 잇는 다리역할, 이벤트 등 메인 로직을 담당

 -대표적인 React.js는 유저 인터페이스를 구축하기 위한 라이브러리. 대표적인 특성은 불변성.

*MVP-MVC 패턴에서 파생. Model+View+presenter, 뷰와 프레젠터는 일대일 관계임으로 MVC패턴보다 더 강한 결합을 지닌 패턴

*MVVM-MVC의 C에 해당하는 컨트롤러가 View model로 바뀐 패턴. View model은 view를 더 추상화한 계층

 

*커멘드? -여러가지 요소에 대한 처리를 하나의 액션으로 처리

*데이터 바인딩? -화면에 보이는 데이터와 웹 브라우저의 메모리 데이터를 일치시키는 기법

 

#2.프로그래밍 패러다임

-프로그래머에게 프로그래밍의 관점을 갖게해주는 개발 방법론. 객체지향과 함수형 프로그래밍으로 예를 들 수 있다.

선언형-함수형이라는 하위 집합을 갖는다, 명령형-객체향, 절차지향으로 나뉜다

1.'선언형'과 '함수형' 프로그래밍

-선언형 프로그램- '무엇을' 풀어내는가에 집중하는 패러다임

-함수형 프로그램- 선언형 패러다임의 일종 

*순수함수? -출력이 입력에만 의존하는 것을 의미

*고참함수? -함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것을 의미

 

2.'객체지향' 프로그래밍

-객체들의 집합, 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식(추상화,캡슐화,상속성,다형성의 특징을 갖고있음)

*추상화? -복잡한 시스템으로 부터 색심적인 개념 또는 기능을 간추려내는 것

*캡슐화? -객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것

*상속성?-상위 클래스의 특성을 하위 클래스가 이어받아 재사용하는 것

*다형성?-하나의 메서드나 클래스가 다양한 방법으로 동작하는 것(오버라이딩, 오버로딩)

3.'절차형' 프로그래밍

-로직이 수행되어야 할 연속적인 계산 과정으로 이루어져 있음. 코드의 가독성이 좋으며 실행 속도가 빠름

 

'CS' 카테고리의 다른 글

CPU , 메모리  (0) 2023.06.28
운영체제  (0) 2023.06.28
프로세스와 스레드  (0) 2023.06.13
운영체제(운영체제의 역할과 구조, 컴퓨터의 요소)  (0) 2023.04.30
네트워크(네트워크의 기초, 토폴로지, 계층모델)  (0) 2023.04.30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
글 보관함