디자인 패턴
소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적 문제가 또 발생 했을 때 재사용할 수 있는 해결책
이미 만들어 진 것을 처음부터 다시 만들 필요가 없다는 의미
패턴은 공통의 언어를 만들어주며, 팀원 사이의 의사 소통을 원활하게 해주는 중요한 역할을 한다.
디자인 패턴 종류
생성(Creational) 패턴 | 구조(Structural) 패턴 | 행위(Behavioral) 패턴 |
추상 팩토리(Abstract Factory) 빌더(Builder) 팩토리 메서드(Factory Method) 프로토 타입(Prototype) 싱글톤(Singleton) |
어댑터(Adapter) 브리지(Bridge) 컴퍼지트(Composite) 데커레이터(Decorator) 퍼사드(Facade) 플라이웨이트(Flyweight) 프록시(Proxy) |
책임 연쇄(Chain of Responsibility) 커맨드(Command) 인터프리터(Interpreter) 미디에이터(Mediator) 메멘토(Memento) 옵저버(Observer) 스테이트(State) 스트레티지(Strategy) 템플릿 메서드(Template Method) 비지터(Visitor) |
- 생성(Creational) 패턴
- 객체 생성에 관련된 패턴
- 객체의 생성과 조합을 캡슐화 해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다
- 구조(Structural) 패턴
- 클래스나 객체를 조합 해 더 큰 구조를 만드는 채턴
- 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운 기능을 제공하는 패턴
- 행위(Behavioral) 패턴
- 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
- 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지, 객체 사이의 결함도를 최소화 하는 것에 중점을 둔다
싱글톤 패턴
전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴
import dao.memberDAO;
public class memberservice {
// SingleTon Pattern
private static memberservice instance = new memberservice();
private memberservice() {}
public static memberservice getInstance() {
if(instance==null) {
instance=new memberservice();
}
return instance;
}
}
MVC 패턴
MVC란 Model View Controller의 약자로 어플리케이션을 세 가지의 역할로 구분한 개발 방법론이다.
사용자가 Controller를 조작하면 Controoler는 Model을 통해 데이터를 가져오고, 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달한다.
- Controller
- 사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후, 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다.
- Model
- 일반적으로 CI의 모델은 데이터베이스 테이블에 대응된다. Topic이라는 테이블은 topic_model이라는 Model을 만든다. 이 관계가 강제적이지 않기 때문에 규칙을 일관성 있게 정의하는 것이 필요하다.
- View
- View는 클라이언트 측 기술인 html/css/javascript들을 모아둔 컨테이너이다.
WEB과 MVC
- 사용자가 웹사이트에 접속한다. (Uses)
- Controller는 사용자가 요청한 웹페이지를 서비스 하기 위해서 모델을 호출한다.(Manipulates)
- 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.
- Controller는 Model이 리턴한 결과를 View에 반영한다. (Updates)
- 데이터가 반영된 View는 사용자에게 보여진다. (Sees)
MVC2
- 들어오는 요청을 다루는 서블릿 단이 있고, 이 서블릿 단이 Controller의 역할을 수행한다.
- Controller는 다음에 어떤 작업이 될지, Model이 어떤 작업을 할 지 결정하고 모든 작업 후 JSP 단어에 어떻게 뿌려질 지를 결정하는 것이다.
- 서블릿은 요청 결과가 들어있는 Beans를 인스턴스화 한다.
- 클라이언트의 요청을 Servlet이 받아 Controller 역할을 수행하고 JSP가 View 역할을 수행하고 Response를 처리한다.
- 어플리케이션이 복잡해도 Controller와 view의 분리로 개발과 유지보수, 확장이 용이하다.
- 구조 설계를 위한 충분한 시간이 필요하며, 높은 수준의 이해가 필요하다.
'Backend > JSP SERVLET' 카테고리의 다른 글
[Servlet] 서블릿 이해 (0) | 2022.07.04 |
---|---|
[JSP] JDBC (0) | 2022.07.02 |
[JSP] 쿠키, Cookie (0) | 2022.06.30 |
[JSP] request.getParameter(), getAttribute() (0) | 2022.06.28 |
[JSP] 세션(Session) (0) | 2022.06.28 |