수강완료한 강의 복습해보자 (코딩으로 학습하는 GoF의 디자인 패턴) 전략 패턴 (Strategy Pattern) 여러 알고리즘을 캡슐화하고 상호 교환 가능하게 만드는 패턴. 사용할 알고리즘을 클라이언트가 선택한다. 적용 전 코드 (Before) BlueLightRedLight.java public class BlueLightRedLight { private int speed; public BlueLightRedLight(int speed) { this.speed = speed; } public void blueLight() { if (speed == 1) { System.out.println("무 궁 화 꽃 이"); } else if (speed == 2) { System.out.println("무궁화..
수강완료한 강의 복습해보자 (코딩으로 학습하는 GoF의 디자인 패턴) 템플릿 콜백 (Template-Callback) 콜백으로 상속 대신 위임을 사용하는 템플릿 패턴. 상속 대신 익명 내부 클래스 또는 람다 표현식을 활용할 수 있다. 적용 전 코드 (Before) FileProcessor.java public class FileProcessor { private String path; public FileProcessor(String path) { this.path = path; } public int process() { try(BufferedReader reader = new BufferedReader(new FileReader(path))) { // 자동 close int result = 0; St..
수강완료한 강의 복습해보자 (코딩으로 학습하는 GoF의 디자인 패턴) 템플릿 메서드 (Factory method) 알고리즘 구조를 서브 클래스가 확장할 수 있도록 템플릿으로 제공하는 방법. 추상 클래스는 템플릿을 제공하고 하위 클래스는 구체적인 알고리즘을 제공한다. 적용 전 코드 (Before) FileProcessor.java public class FileProcessor { private String path; public FileProcessor(String path) { this.path = path; } public int process() { try(BufferedReader reader = new BufferedReader(new FileReader(path))) { // 자동 close ..
수강완료한 강의 복습해보자 (코딩으로 학습하는 GoF의 디자인 패턴) 추상 팩토리 (Abstract Factory) 서로 관련있는 여러 객체를 만들어주는 인터페이스 구체적으로 어떤 클래스의 인스턴스를(concrete product)를 사용하는지 감출 수 있다. 적용 전 코드 (Before) Anchor.java public interface Anchor { } WhiteAnchor.java public class WhiteAnchor implements Anchor { } Wheel.java public interface Wheel { } WhiteWheel.java public class WhiteWheel implements Wheel { } Ship.java @Getter @Setter @ToStr..
수강완료한 강의 복습해보자 (코딩으로 학습하는 GoF의 디자인 패턴) 팩토리 메서드 (Factory Method) 구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다. 다양한 구현체(Product)가 있고, 그중에서 특정한 구현체를 만들 수 있는 다양한 팩토리(Creator)를 제공할 수 있다 적용 전 코드 (Before) Ship.java @Getter @Setter @ToString public class Ship { private String name; private String color; private String logo; } Client.java public class Client { public static void main(String[] args) { Ship whiteship =..
DispatcherServlet 서블릿 컨테이너의 가장 앞단에서 들어오는 모든 요청을 먼저 받아, 적합한 컨트롤러에 위임해주는 프론트 컨트롤러다. dispatch "보내다" 라는 뜻 클라이언트로부터 어떤 요청이 오면, 서블릿 컨테이너가 이 요청을 받게되고, 이 요청을 프론트 컨트롤러인 DispatcherServlet이 받아서 해당 요청을 처리할 컨트롤러(Bean)을 getBean() 메서드로 받아와서 요청에 적합한 컨트롤러의 메서드를 실행시킨다. Spring : web.xml 을 통한 매핑 web.xml Hello_servlet Hello.Hello_servlet // servlet class Hello_servlet /Hello SpringBoot : 자동 구성 SpringBoot는 아래 spring-..
마이바티스(Mybatis) SQL과 자바 객체를 매핑하는 사상에서 개발된 데이터베이스 접근용 프레임워크다. 마이바티스는 SQL 기반으로 데이터베이스 접근을 수행하는 기존 방법을 받아들이고, 규모가 큰 애플리케이션 개발에서 발생하는 과제를 해결하는 구조를 제공한다. Mybatis는 자체 Connection Pool을 가지며, 환경에 따라 사용할 DB를 설정하여 사용한다. 마이바티스 등장 애플리케이션의 규모가 커지면서 SQL이 수백개가 넘는 경우가 많아졌다. SQL 자체의 체계적인 관리 방법이나 SQL의 입출력 데이터와 자바 객체의 효율적인 변환 방법 등 스프링의 기능만으로는 해결할 수 없는 과제가 발생했다. 마이바티스 이점 SQL의 체계적인 관리, 선언적 정의(설정 파일, 어노테이션) 자바 객체와 SQL ..