Skip to content

Latest commit

 

History

History
88 lines (79 loc) · 4.56 KB

21_11_16_TIL.md

File metadata and controls

88 lines (79 loc) · 4.56 KB

Template Method Pattern

  • 디자인 패턴의 일종으로, 프레임 워크에서 많이 사용되는 패턴이다.
  • 알고리즘(전체의 흐름)을 추상 메소드를 이용하여 정의하고, 이 흐름을 변경하지 않고 알고리즘을 재정의(오버라이딩)하는 패턴이다. (변하지 않는 기능은 부모 클래스에 선언하고, 자주 변경되고 확장 가능성이 있는 기능은 자식 클래스에서 구현한다.)
  • 동일한 기능을 하는 메소드이지만 여러곳에서 다른형태로 사용이 필요한 경우 유용한 패턴이다.
  • 구체적인 각 메소드의 구현은 자식 클래스에 위임한다.

Template Method

  • 추상 메소드나 구현된 메소드를 활용하여 전체의 흐름을 정의 해놓은 메소드
  • 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("내연기관차 멈춥니다.");
  }
}


Static Web Programming

  • 웹 서버를 이용하여 웹 페이지들을 브라우저에 표시하는 방식
  • 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...)의 디자인을 정의

Dynamic Web Programming

  • 다양한 기술을 활용하여 사용자의 요청에 따라 웹 페이지를 가공하여 브라우저에 표시하는 방식
  • 변경 요청이 발생하지 않아도 실시간으로 페이지가 변경된다.

구성 요소

  • 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(Common Gateway Interface)

  • 웹 서버 상에서 특정 플랫폼에 의존하지 않고, 사용자 프로그램을 동작시키기 위한 인터페이스
  • 프로세스 방식으로 수행되기 때문에 서버의 부하가 심하다.
  • CGI 프로그램의 정보 입력은 명령줄의 Parameters, 환경변수, 표준입력에 의해 이루어진다.
  • 출력되는 데이터는 올바른 형식의 HTTP Header로 시작해야 한다.
  • 최근에는 Perl, Python, Ruby 등이 사용된다.