- 디자인 패턴의 일종으로, 프레임 워크에서 많이 사용되는 패턴이다.
- 알고리즘(전체의 흐름)을 추상 메소드를 이용하여 정의하고, 이 흐름을 변경하지 않고 알고리즘을 재정의(오버라이딩)하는 패턴이다. (변하지 않는 기능은 부모 클래스에 선언하고, 자주 변경되고 확장 가능성이 있는 기능은 자식 클래스에서 구현한다.)
- 동일한 기능을 하는 메소드이지만 여러곳에서 다른형태로 사용이 필요한 경우 유용한 패턴이다.
- 구체적인 각 메소드의 구현은 자식 클래스에 위임한다.
- 추상 메소드나 구현된 메소드를 활용하여 전체의 흐름을 정의 해놓은 메소드
- final 키워드를 사용하여 선언한다.
abstract class Car {
public abstract void drive(); // 공통으로 구현되야 하는 기능
public abstract void stop(); // 공통으로 구현되야 하는 기능
public void startCar(String model) {
System.out.println(model + "출발합니다!");
}
public void turnOff(String model) {
System.out.println(model + "시동을 끕니다!");
}
}
class ElectricCar extends Car{
public abstract void drive() {
System.out.println("전기차 운행합니다.");
}
public abstract void stop() {
System.out.println("전기차 멈춥니다.");
}
}
class EngineCar extends Car{
public abstract void drive() {
System.out.println("내연기관차 운행합니다.");
}
public abstract void stop() {
System.out.println("내연기관차 멈춥니다.");
}
}
- 웹 서버를 이용하여 웹 페이지들을 브라우저에 표시하는 방식
- Resource(HTML 페이지, CSS, 이미지, 자바스크립트 파일 등)를 한 번에 저장해놓고, 브라우저에서 요청할 때 이를 화면에 표시하는 방식이다.
- 페이지가 변경 요청이 발생하지 않는 이상 사용자는 고정된 하나의 웹 페이지를 보게 된다.
- Web Server : 서비스를 제공하는 서버(컴퓨터)
- Client : 서비스를 요청하는 컴퓨터(서비스를 제공받는 컴퓨터)
- HTTP(Hyper Text Transfer Protocol) : www 서비스를 제공하는 통신 규약
- HTML(Hyper Text Markup Language) : www 서비스를 제공하기 위한 표준 언어
- Javascript : 웹 페이지에서 동적인 기능을 제공
- CSS(Style Sheet) : HTML 문서의 요소들(div, table, etc...)의 디자인을 정의
- 다양한 기술을 활용하여 사용자의 요청에 따라 웹 페이지를 가공하여 브라우저에 표시하는 방식
- 변경 요청이 발생하지 않아도 실시간으로 페이지가 변경된다.
- WAS(Web Application Server)
- 인터넷 상에서 사용자의 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어
- 웹 애플리케이션의 실행 환경과 DB 접속 기능을 제공한다.
- 다수의 트랜잭션을 관리한다.
- 비즈니스 로직을 수행한다.
- 서버에서 실행되는 기능들이 Thread 방식으로 실행된다. (기존 Process 방식으로 실행되는 것보다 훨씬 빠르게 동작한다.)
- JSP(Java Server Pages)
- 썬 마이크로시스템즈에 의해 만들어진 HTML코드 내에 자바 코드를 삽입하여 동적으로 웹 페이지들을 생성하기 위한 서버 측 스크립트 언어
- 사용자의 요구를 처리하는 기능은 최초 한 번만 메모리에 로드된다.
- Servlet으로 변환된 후 실행된다.
- ASP(Actuve Server Pages)
- MS사에서 만들어진 동적으로 웹 페이지들을 생성하기 위해 개발한 서버 측 스크립트 언어
- 현재는 ASP.NET으로 대체
- PHP(Hypertext Preprocessor)
- 라스무스 러도프에 의해 만들어진 서버 측 스크립트 언어
- 자체 인터프리터를 제공하기 때문에 범용 프로그래밍 언어로도 사용할 수 있다.
- URL의 파싱, 폼 처리, 정규 표현식 등을 통해 HTML을 강력하게 처리할 수 있다.
- 웹 서버 상에서 특정 플랫폼에 의존하지 않고, 사용자 프로그램을 동작시키기 위한 인터페이스
- 프로세스 방식으로 수행되기 때문에 서버의 부하가 심하다.
- CGI 프로그램의 정보 입력은 명령줄의 Parameters, 환경변수, 표준입력에 의해 이루어진다.
- 출력되는 데이터는 올바른 형식의 HTTP Header로 시작해야 한다.
- 최근에는 Perl, Python, Ruby 등이 사용된다.