전체 글(59)
-
프록시 패턴과 프록시 서버
프록시 패턴? 프록시 패턴(Proxy Pattern)은 대상 원본 객체를 대리하여 대신 처리하게 함으로써 로직의 흐름을 제어하는 행동 패턴이다. 객체 지향 프로그래밍에 접목해 보면 클라이언트가 대상 객체를 직접 쓴느게 아니라 중간에 프록시(대리인)을 거쳐서 쓰는 코드 패턴이다. 중계 대리인을 이용하는 이유? 중계 대리인은 클라이언트가 대상 객체에 접근하기 전 흐름을 가로채 클라이언트의 정보(요청)를 필터링 하거나 데이터를 가공하는 역할을 한다.대상 클래스가 민감한 정보를 가지고 있거나 인스턴스화 하기에 무겁거나 추가기능을 가미하고 싶은데, 원본 객체를 수정할 수 없는 상황일 때를 극복하기 위해서이다. 프록시 패턴을 사용해서 누릴 수 있는 효과 보안 : 프록시는 클라이언트가 작업을 수행할 수 있..
2024.05.31 -
옵저버 패턴
옵저버 패턴? 옵저버 패턴은 객체의 상태 변화를 관찰하는 관차자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하여 자동으로 내용이 갱신되는 일대다 의존성을 가진 디자인 패턴이다. 사용 분산 이벤트 핸들링 시스템이벤트 기반 프로그래밍특정 행동이 자동으로 / 순서에 따라 발생하는 것이 아닌 어떤 일에 대한 반응으로 동작. 장점 실시간으로 한 객체의 변경사항을 다른 객체에 전파할 수 있다. (트위터, 유튜브)느슨한 결합(Loose Coupling)을 사용한다. 단점 너무 많이 사용할 경우 상태 관리가 힘들 수 있다.데이터 배분에 문제가 발생하면 큰 문제로 발전할 수 있다. Loose Coupling 클래스를 느슨..
2024.05.30 -
전략 패턴
전략 패턴 (Strategy pattern) = 정책 패턴 (Policy pattern) 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고 사용하며, 동적으로 전략 수정이 가능한 패턴전략 패턴의 의도동일 계열의 알고리즘군을 정의걸어서, 뛰어서, 날아서차갑게, 따뜻하게, 냉동으로, 뜨겁게각 알고리즘을 캡슐화이동 전략온도 전략이들을 상호교환 가능하도록 만듦 사용하는 이유 키오스크를 예시로언어 선택한국어중국어일본어결제 방법현금카드 전략 패턴 미 사용 시키오스크 추상 클래스한국어 현금, 카드 클래스 2개중국어 현금, 카드 클래스 2개일본어 현금, 카드 클래스 2개총 6개의 키오스크 클래스가 필요.카테고리가 늘어나거나 (화면 밝기 - 어둡게, 보통, 밝게) 알고리즘군이 늘어나게 되면 (언어선택 - 영어)..
2024.05.29 -
팩토리 패턴
디자인 패턴의 3가지 분류 생성 패턴 (Creational) : 객체의 생성 방식 결정Class - creational patterns, Object - creational patterns.예) DBConnection을 관리하는 Instance를 하나만 만들 수 있도록 제한하여, 불필요한 연결을 막음.구조 패턴 (Structural) : 객체간의 관계를 조직예) 2개의 인터페이스가 서로 호환이 되지 않을 때, 둘을 연결해주기 위해서 새로운 클래스를 만들어서 연결시킬 수 있도록 함.행위 패턴 (Behavioral): 객체의 행위를 조직, 관리, 연합예) 하위 클래스에서 구현해야 하는 함수 및 알고리즘들을 미리 선언하여, 상속시 이를 필수로 구현하도록 함. 팩토리 패턴은 객체 생성 관련 상세 로직을 숨기..
2024.05.28 -
싱글톤 패턴
싱글톤 패턴이란? 싱글톤 패턴은 객체의 인스턴스가 오직 1개만 생성되는 디자인 패턴을 의미한다.보통 데이터베이스 연결 모듈에 많이 사용한다. public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다. } public static Singleton getInstance() { return instance; } public void say() { System.out.println("hi, there"); }}// 객체를 미리 생성해두고 가져..
2024.05.27 -
[TIL][Java][2024-01-15] 추상 클래스
추상 클래스 클래스가 설계도라면 추상클래스는 미완성된 설계도라고 볼 수 있다. abstract 키워드를 사용하여 추상 클래스를 선언할 수 있다. 추상 클래스는 추상 메서드를 포함할 수 있다. 자식 클래스에 의해 확장되어 완전한 클래스가 된다. public abstract class 추상클래스명 { } 추상 메서드 추상 메서드는 아직 구현되지 않은 미완성된 메서드이다. abstract 키워드를 사용하여 추상 메서드를 선언할 수 있다. 추상 메서드는 일반적인 메서드와 다르게 블록이 없다. public abstract class 추상클래스명 { abstract 리턴타입 메서드이름(매개변수, ...) } 추상 클래스 상속 추상 메서드는 extends 키워드를 사용하여 클래스에서 상속된다. 상속받은 클래스에서 추..
2024.01.16