프레임워크 개념


1.sw 재사용성

2.디자인패턴 프레임워크란? 둘의 관련성

3.프레임워크 구성요소 종류


재사용 방법

copy & paste

가장 기본적인 방법이다.

ex)날짜 형태 지정 java

a클래스에 있는 코드를  b클래스에서 사용하기위해 복사 붙여넣기한다.

문제점- jdk가 바뀐다면? 코드가 있는 모든 클래스에 영향이가게된다.


method function(메소드호출)

a클래스에있던 코드를 메소드를 생성하여 집어넣는다.

클래스이름.메소드로 사용가능하다.

(호출하는쪽에는 영향이안감)


문제점 - MethodSignature(메소드명, 리턴타입, 아큐먼트 갯수,타입등)

복사 붙여넣기보단 진보된 방식이지만 작업영역간 결합도 문제 존재한다.


Class

메소드를 클래스 내부에 구현해서 만들어놓은것이다.

메소드를 구성해놓은 클래스를 상속한다.

자식 클래스에서 사용한다.

메서드방식보단 개선된 방식이다.


문제점 - signature 문제는 그대로있다.


AoP(관심의 분리)

- OOP를 supprt해주는 개념

- C에서도 사용가능

*관심사 분리

주제:은행

횡단관심모듈(기능적 로직)

ex)보안,로깅

핵심관심모듈(비지니스로직)

ex)계좌이체,입출금,이자계산

위빙 : 핵심관심모듈에서 횡단관심모듈을 직접 호출하지 않음(프레임워크에서 해줌)


AoP란?(간단설명)

간단하게말해, 계좌이체를 하게될때 로그를 남기게되는데 

코드상에서 직접호출하지 않고 프레임워크에서 처리해준다.







디자인패턴과 프레임워크의 관련성

디자인패턴의 정의

프로그램개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나이다.

개발과정에 발견된 Know_how를 축적하여 이름붙인다.

재사용하기 쉽게 특정 규약을 묶어서 정리한것.

대표적인 디자인패턴(GOF)에서 23가지 지원한다.


디자인패턴 사용하는 이유

- 요구사항 변경에따른 소스코드변경 최소화

- 팀 프로젝트시 범용적인 코딩 스타일적용

- 인수인계시 직관적인 코드 사용


프레임워크의 정의

- 비기능적(Non-Funtional) 요구사항(성능,보안,로깅,확장성,안정성등)을 만족하는 구조와

구현된 기능을 안정적으로 실행하도록 제어해주는 잘만들어진 구조의 라이브러리 덩어리

또 애플리케이션들의 최소한의 공통점을 찾아 하부 구조를 제공함.

- 개발자들이 시스템 하부구조 구현하는데 들어갈 노력을 절감해준다.


프레임워크를 사용하는이유

비기능적인 요소(보안,로깅) 초기개발단계마다 구현해야하는 불합리함 극복할수있다.

- 기능적인 요구에만 집중(비지니스로직)하면된다.

- 반복적으로 발견되는 문제를 해결하기위한 특화된 Solution이다.



디자인패턴과 프레임워크의 관련성

- 디자인패턴은 프레임워크의 핵심적인 특징(프레임워크내부에 디자인패턴 적용해서 사용)이 있다.

- 프레임워크를 디자인패턴이라고는 하지못함. 디자인패턴을 사용하고있는 것이다.

- 프레임워크는 디자인 패턴과함께 패턴이 적용된 라이브러리를 제공한다.


프레임워크가 내부적으로 디자인패턴사용한다.

프레임워크를 사용하면 녹아들어가있는 디자인패턴을 사용하게된다.






프레임워크의 구성요소와 종류

Ioc(제어의 역전)

ClassLibrary

Design Patterm


IOC(제어의 역전)

- 인스턴스 생성 부터 소멸이 컨테이너가 처리(개발자가 안함)한다.

- 프레임워크한테 권한을 넘김으로써 개발자 코드가 신경쓸 부분을 줄여준다.

차이점


프레임워크(IOC적용) 사용할때

 라이브러리 사용할때

 프레임워크가 개발자가 작성한 코드를 호출

 개발자가 라이브러리 호출(스트링유틸사용시)


주도권이 프레임워크가 가지고있음(제어의 역전)

Spring 컨테이너가 IOC지원함.

-메타데이터(XML설정)를 통해 beans를 관리하고 어플리케이션의 중요부분을 형상한다.

bean들을 의존성 주입을 통해IoC지원한다.


ClassLibrary

특정 부분의 기술적인 구현을 라이브러리 형태로 제공(반제품) 기본적인 뒷단을 구성되어있다.

프레임워크코드가 유저코드를 호출(이게 제어역전)한다.





디자인패턴

디자인 패턴 + 라이브러리 = 프레임워크

프레임워크 사용시 라이브러리의 디자인패턴을 보면 구성을 이해하기쉽다.

커스터마이징할때도 디자인패턴의 이해가 필요하다.


'개발 소발 > 개발 Spring' 카테고리의 다른 글

AOP란? AOP 기초개념  (0) 2020.07.09
Spring IoC(Inversion of Control),Bean,의존성주입이란?  (0) 2020.07.08
SpringMVC란?  (0) 2018.01.11
MVC패턴이란?  (0) 2018.01.11
Mybatis Mapper 인터페이스란?  (0) 2018.01.11

+ Recent posts