손정아
JAVA
Singleton pattern
Factory pattern
Tomcat
웹앱 프로젝트에 main 메소드가 없는 이유?
웹사이트를 구현하는데 있어서 톰캣이 우리에게 제공해주는 기능들
정적웹 vs 동적웹
실습
김치훈
디자인 패턴
싱글톤 패턴
팩토리 패턴
Tomcat
이승훈
싱글톤 패턴
팩토리 패턴
정적 웹 동적 웹
톰캣에 main 메소드가 없는 이유
톰캣, 서블릿, 아파치 or Nginx
•
서블릿은 아예 자바
•
JSP는 HTML 기반에 자바 문법을 활용
•
이 둘을 돌아가게 하는게 톰캣 ⇒ 컨테이너
•
아파치는 요청을 받으면 톰캣에게 넘기고 요청을 다시 전달 (웹 서버)
•
둘을 합치면 WAS
C:\xampp\htdocs ⇒ 외부에 공개하는 폴더
C:\work\apache-tomcat-10.0.22\conf\context.xml => reloadable ="True” 자동 빌드
최태승
개념
객체의 인스턴스가 오직 하나만 생성되는 패턴
예시 코드
public class Main{ // 웬만하면 public을 넣어준다
private static Main instance = new Main();
private Main(){} // 생성자를 외부에서 호출하지 못하게 private로 설정한다
public static Main getInstance(){ //
return instance;
} // getInstance를 통해서만 생성이 가능함
public void hi(){
System.out.println("Hello Mutsa");
}
}
Java
복사
위의 코드를 보면 객체의 인스턴스가 오직 하나만 생성되는 걸 알 수 있다. getInstance를 선언하고 생성된 인스턴스를 리턴하는 형태로 만들어 프로그램 전반에 걸쳐 하나의 인스턴스를 유지하도록 코드를 작성한다.
싱글톤 패턴을 사용하는 이유
1.
데이터 공유가 쉬움
- 싱글톤 인스턴스는 다른 클래스의 인스턴스들이 접근하여 사용할 수 있다. (전역성)
2.
메모리 절약
- 한 번의 객체 생성으로 재사용이 가능하여 메모리 낭비를 방지할 수 있다.
싱글톤 패턴의 문제점
1.
SOLID 원칙 중 하나인 의존성 역전 원칙(Dependency Inversion Principle)를 위반한다. 또한, 개방폐쇄원칙(Open-Closed Principle)에도 어긋날 수 있다.
- 클래스 내에서 객체를 생성할 뿐만 아니라 싱글톤 객체의 역할이 복잡할 경우 다른 객체간의 결함도가 높아지기 때문
2.
싱글톤 객체를 수정할 경우 해당 객체를 사용하는 부분에서 side effect가 발생할 수 있으며 multi thread 환경에서 동기화 처리와 같은 문제들이 발생할 수 있다.
- 이런 문제들을 해결하기 위해 syncronized 키워드를 사용해아 하기 때문에 많은 코드가 필요함
싱글톤 1번 문제
싱글톤 2번 문제
싱글톤 3번 문제
싱글톤 4번 문제
권종석
디자인 패턴
싱글톤 패턴
객체의 인스턴스가 하나만 생성되는 패턴
장점
메모리를 절약할 수 있음
데이터 공유가 쉬움
단점
멀티스레드 환경에서 동시성 문제가 발생함
자원을 공유하기 때문에 격리된 환경에서의 테스트가 어려움
클라이언트는 구체 클래스에 의존
코드의 길이가 길어짐
팩토리 패턴
객체 생성을 캡슐화, 외부에게 감춤
(마치 공장과 같은 클래스가 객체를 조립해 생성함)
팩토리 패턴의 장점
객체를 생성하는 코드를 추상화하여 코드를 한 곳에서 관리해 변경이 발생했을 때 코드를 변경하기 용이 → 캡슐화의 장점
코드의 중복을 줄이고 클래스와 인터페이스를 통해 다형성의 이점을 가져갈 수 있음
Tomcat
Tomcat
Web