CS

잔디심는 정원사
프록시 패턴 (Proxy Pattern)
·CS/Design Pattern
프록시 패턴이란?프록시 패턴은 특정 객체에 접근을 조절하기 위해 대리자를 세워서 대신 처리하게 함으로써 로직의 흐름을 제어하는 행동 패턴입니다. 클라이언트가 대상 객체를 직접 쓰는게 아니라 중간에 프록시(대리인)을 거쳐서 씁니다. 따라서 대상 객체(Subject)의 메소드를 직접 실행하는 것이 아닌, 대상 객체에 접근하기 전에 프록시(Proxy) 객체의 메서드를 접근한 후 추가적인 로직을 처리한뒤 접근하게 됩니다. 이때 프록시 객체가 처음 생성될 때는 자신이 대신할 객체를 미리 만들지 않고 외부에서 처음 요청이 들어왔을 때 Subject 객체를 생성합니다.프록시는 캐싱과 지연 초기화, 로깅의 효과를 지닌다.캐싱(Caching) : 프록시가 내부 캐시를 유지하여 데이터가 캐시에 아직 존재하지 않는 경우에만..
중재자 패턴 (Mediator Pattern)
·CS/Design Pattern
중재자 패턴이란?중재자 패턴은 여러 객체들에게 분산될 행위를 한 곳(Mediator 객체)으로 모아줌으로써 객체들 간의 연결강도를 줄여줍니다. 이로써 객체들간의 관계를 M:N에서 M:1로 줄여주어서 각 객체들은 Mediator 객체를 제외한 다른 객체는 알지 못하고, 중재자 클래스에만 의존하게 됩니다.  중재자 패턴의 사용 방법Mediator : Colleague 객체간의 커뮤니케이션을 위한 인터페이스 정의Colleague : Mediator를 통해 다른 Colleague와 커뮤니케이션을 위한 인터페이스 정의ConcreteMediator : Mediator 구현체로 Colleague들간의 상호 커뮤니케이션을 위해 Colleague들을 가지고 있으며 커뮤니케이션을 조정함ConcreteColleague : ..
옵서버 패턴 (Observer Pattern)
·CS/Design Pattern
옵서버 패턴이란?옵저버 패턴(Observer Pattern)은 1대 다의 의존관계이며 객체 상태의 변화가 다른 의존 객체에 통지되고 자동으로 업데이트 되게 합니다. Pub/Sub(발행/구독) 모델로도 알려져 있기도 합니다. Java에서는 Observer, Observable를 지원하기도 합니다.프로그래밍적으로 옵저버 패턴은 사실 '관찰' 하기 보단 갱신을 위한 힌트 정보를 '전달' 받길 기다린다고 보는 것이 적절하다. 관찰자라는 단어 뉘앙스에서 능동적으로 대상을 관찰하는 것처럼 느껴지지만, 사실 대상 객체로부터 수동적으로 전달 받기를 기다리고 있기 때문이다. 즉,관찰자(Observer)는 발행자(Subject)가 알림을 주기를 항시 대기하고 있는 것이다.옵서버 패턴 사용 방법발행자 클래스ISubject..
싱글톤 패턴 (Singleton Pattern)
·CS/Design Pattern
싱글톤 패턴이란?싱글톤 패턴이란 단 하나의 유일한 객체를 만들기 위한 코드 패턴입니다.쉽게 말하자면 메모리 절약을 위해, 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법을 말합니다. 전역 변수라는 걸 만들어 이용하는 이유는, 똑같은 데이터를 메서드마다 지역 변수로 선언해서 사용하면 무의미하기도 않고 낭비이기 때문에, 전역에서 한번만 데이터를 선언하고 가져와 사용하면 효율적이기 때문입니다.따라서 보통 싱글톤 패턴이 적용된 객체가 필요한 경우는 그 객체가 리소스를 많이 차지하는 역할을 하는 무거운 클래스일때 적합하며,  대표적으로 데이터베이스 연결 모듈이 있습니다. 싱글톤 패턴 사용 방법1. Singleton 클래스 안에 Singleton이라는 이름의 priv..
브리지 패턴 (Bridge Pattern)
·CS/Design Pattern
브리지 패턴이란?구현부에서 추상층을 분리하여 각자 독립적으로 변형이 가능하고 확장이 가능하도록 합니다. 즉 기능과 구현에 대해서 두 개를 별도의 클래스로 구현을 합니다. 추상 계층에 있는 모든 클래스의 연산 실행은 구현 계층을 통해 이루어 진다.브리지 패턴 사용 방법구현 계층Implementor : 구현 클래스에 대한 인터페이스를 제공ConcreateImplementor: Implementor 인터페이스를 구현. 실제적은 구현 내용을 담음추상 계층Abstraction : 추상적 개념에 대한 인터페이스를 제공하고, 객체 구현부 인터페이스와 집합 관계를 형성RefinedAbstraction  : 추상적 개념에 정의된 인터페이스를 확장//추상 부분public interface Implementor{ v..
컴포지트 패턴 (Composite Pattern)
·CS/Design Pattern
컴포지트 패턴이란?복합 객체(Composite) 와 단일 객체(Leaf)를 동일한 컴포넌트로 취급하여, 클라이언트에게 이 둘을 구분하지 않고 동일한 인터페이스를 사용하도록 하는 구조 패턴입니다. 컴포지트 패턴은 전체-부분의 관계를 갖는 객체들 사이의 관계를 트리 계층 구조로 정의해야 할때 유용합니다.컴포지트 패턴 사용 방법Component : Leaf와 Compsite 를 묶는 공통적인 상위 인터페이스Composite : 복합 객체로서, Leaf 역할이나 Composite 역할을 넣어 관리하는 역할을 한다.  Component 구현체들을 내부 리스트로 관리한다add 와 remove 메소드는 내부 리스트에 단일 / 복합 객체를 저장Component 인터페이스의 구현 메서드인 operation은 복합 객체에..
퍼싸드 패턴 (Facade Pattern)
·CS/Design Pattern
퍼싸드 패턴이란?내부의 서브 시스템을 감싸고, 클라이언트에게 인터페이스를 제공하여 쉽게 접근할 수 있도록 하는 패턴입니다. high-level 인터페이스를 정의하고 제공해 시스템을 감춰 클라이언트는 내부에 어떤 기능이 존재하는지 복잡한 것에 대해 잘 모르더라도, 해당 기능에 접근하여 사용할 수 있습니다.퍼사드 패턴은 전략 패턴이나 팩토리 패턴과 같은 여타 다른 디자인 패턴과는 다르게 클래스 구조가 정형화 되지 않은 패턴이다. 반드시 클래스 위치는 어떻고 어떤 형식으로 위임을 해야되고 이런것이 없다. 그냥 퍼사드 클래스를 만들어 적절히 기능 집약화만 해주면 그게 디자인 패턴이 되는 것이다. (패턴이라기 보단 논리에 가깝다)퍼싸드 패턴의 사용 방법서브 클래스들 사이의 통합 인터페이스를 제공하는 Wrapper..
추상 클래스와 인터페이스의 차이점
·CS/OOP
추상 클래스와 인터페이스는 모두 인스턴스화 (new)를 할 수 없다는 공통점이 있다.추상 클래스와 인터페이스의 차이점은 ?  추상 클래스인터페이스추상이 아닌 메소드가질 수 있음모든 메서드가 추상 메서드인스턴스 변수 선언가능불가능, static final 은 가능생성자정의 가능정의 불가가시성 차이점구분인터페이스 멤버 (메서드)추상 클래스 멤버 (메서드, 변수)인터페이스 자체추상클래스 자체Public기본적으로 적용명시적으로 지정 가능명시적으로 지정 가능명시적으로 지정 가능Protected불가능지정 가능불가능지정 가능Private자바 9+에서 내부 구현을 위해 지정 가능지정 가능불가능지정 가능Package-private패키지 내에 선언 시 자동 적용 (명시적으로 public이 아닐 경우)패키지 내에 선언 시 ..
어댑터 패턴 (Adaptor Pattern)
·CS/Design Pattern
어댑터 패턴이란?어댑터 패턴은 서로 호환되지 않는 인터페이스를 가진 객체들이 협력할 수 있도록 하는 패턴으로, 래퍼로도 불립니다. 기존에 사용했던 시스템(레거시 시스템)을 원하는 인터페이스로 사용가능하게 합니다.  어댑터 패턴의 사용 방법클래스 어댑터 (상속)Adaptee : 기존 레거시 시스템Target: 어댑터가 구현하는 인터페이스Adapter: Client와 Adaptee중간에서 호환성이 없는 둘을 연결시켜주는 역할 담당클래스 어댑터 방식에서는 상속을 이용해 구성Adaptee는 extends, Target은 implements해서 구현Client: 기존 시스템을 어댑터를 통해 이용하려는 쪽. Client interface를 통해 Service를 이용// Target 인터페이스 - 새로운 인터페이스p..
UML(UML 필요성, 클래스 다이어그램)
·CS/OOP
UML이란?UML(Unified Modeling Language)은 프로그램의 구조와 행위를 시각적으로 표현하기 위한 표준화된 모델링 언어입니다. 복잡한 소프트웨어 시스템의 설계를 다이어그램으로 표현함으로써, 개발자와 이해관계자 간의 의사소통을 용이하게 합니다. UML 사용 이유모델 검증: UML을 사용하면 구현 전에 시스템 모델을 검증할 수 있고, 잠재적인 문제를 사전에 발견하고 수정할 수 있습니다.비용 절감: 코드를 작성하고 테스트하는 것보다 UML 모델을 사용하여 시스템을 설계하고 검증하는 것이 비용이 적게 듭니다.테스트 및 검증: 시스템이 실제로 요구사항을 만족하는지 테스트하고 검증하기 위해 사용됩니다.UML 다이어그램 종류 구조 다이어그램클래스 다이어그램객체 다이어그램복합체 구조 다이어그램배치 ..
minsu20
'CS' 카테고리의 글 목록 (4 Page)