싱글톤 패턴객체의 인스턴스를 하나만 생성하도록 하는 설계 패턴특정 클래스의 인스턴스가 프로젝트 전반에 걸쳐 하나만 존재 + 이를 여러 곳에서 공유하여 사용하고 싶은 경우 사용자원의 중복을 피하기 위해 사용사용처DB 커넥션 풀스레드 풀시스템 설정 객체필요성시스템의 설정 정보를 저장하는 객체가 여러 개 생성 시, 각 설정 정보 간의 불일치 발생가능성자원의 낭비 방지구현법생성자의 private 접근 제어외부에서 인스턴스를 임의로 생성할 수 없어야 함.정적 참조 변수해당 클래스 인스턴스 참조가능한 private 정적 참조 변수가 필요함.해당 변수로 생성된 유일한 인스턴스 참조함정적 메서드외부에서 해당 클래스의 인스턴스를 얻을 수 있는 정적 메서드가 필요함인스턴스가 생성 X → 해당 메서드 내에서 인스턴스 생성 ..
템플릿 메서드 패턴알고리즘 구조를 메서드에 정의하고, 그 일부 단계를 서브 클래스에서 구현할 수 있도록 하는 디자인 패턴코드예시적용전 package org.example.templateMethodPattern; public class Dog { public void playWithOwner() { System.out.println("귀염둥이 이리온..."); System.out.println("멍!멍!"); System.out.println("꼬리 살랑 살랑~"); System.out.println("잘했어"); } }package org.example.templateMethodPattern; public class Cat { public void playWithOwner() { System.out.pr..
요리와 OOP요리프로그래밍요리도구객체 지향의 4대 원칙(캡! 상추다)요리도구 사용법설계 원칙 ( SOLID )레시피디자인 패턴디자인 패턴의 중요성프로그래밍에서 반복적으로 나타나는 문제를 해결하기 위한 베스트 프랙티스객체 지향의 특성과 설계 원칙 기반 → 다양한 개발 문제 효과적으로 해결가능스프링과 디자인 패턴객체 지향의 원칙 극대화한 프레임워크스프링에도 디자인패턴이 녹아들어가 있음.디자인 패턴 구현 방식3가지 특성을 주로 이용함상속 ( extends )인터페이스 ( interface / implements )합성 ( 객체를 속성으로 사용 ) Uploaded by N2T
어댑터 패턴서로 다른 두 인터페이스가 함께 동작할 수 있도록 중개역할하는 디자인 패턴변환기 or 중개자 역할OOP 원칙 중 하나인 OCP ( 개방 - 폐쇄 원칙 ) 을 따른다.일상생활 예시 : 충전기충전기휴대폰 ↔ 전원 콘센트 사이 어댑터 역할휴대폰과 전원 콘센트서로 다른 인터페이스충전기가 연결을 가능하게함.프로그래밍 예시 : JDBC ODBCJDBC ( Java Database Connectivity )ODBC ( Open Database Connectivity )는 여러 다른 데이터베이스 시스템 통일된 인터페이스 제공어댑터 패턴 → 개방 폐쇄 원칙JDBC 와 JRE 는 기존 시스템에 영향을 주지 않고, 다양한 DB 와 플랫폼에 쉽게 적용가능코드 예시 : 어댑터가 적용되지 않음public class S..
프록시 패턴(Proxy Pattern)대리자, 대변인누군가를 대신해 그 역할을 수행프록시 적용전public class ClientWithNoProxy { public static void main(String[] args) { // 프록시를 이용하지 않은 호출 Service service = new Service(); System.out.println(service.runSomething()); } }public class Service { public String runSomething() { return "서비스 짱!!!"; } }Service 객체의 runSomething() 메서드 직접 호출프록시 적용 후public class Service implements IService { public St..
데코레이터 패턴객체에 동적으로 새로운 책임(장식) 을 추가하는 디자인 패턴코드의 유연성 부여가능원본 객체에 여러 가지 장식을 덧입힐 수 있음.프록시 패턴과 차이프록시목적제어의 흐름 변경별도의 로직 처리클라이언트가 받는 반환값을 특별한 경우가 아니면 변경 X데코레이터클라이언트가 받는 반환값에 장식을 더함클래스 다이어그램과 시퀀스 다이어그램프록시와 데코레이터는 클래스 다이어그램 , 시퀀스 다이어그램에서 유사한 구조를 가질 수 있음.하지만, 프록시원래의 반환값 전달데코레이터반환값 자체에 변화라는 점이 다르다.코드public interface IService { public abstract String runSomething(); }public class Service implements IService { @..