Q) VO와 Map의 차이는? 언제 VO를 쓰고 언제 Map 써야하는가? => 목적에 맞게 Java Beans 일반적으로 자바빈은 속성과, 그 속성에 대한 getter, setter 메서드로 구성된 데이터 객체(VO, Value Object)를 말하며 데이터 전송에 사용되는 객체를 말한다. 자바로 작성된 재사용 가능한 소프트웨어 컴포넌트 getter, setter 메서드를 통해 컴포넌트에 접근가능 VO (Value Object) 데이터 그 자체로 의미 있는 것을 담고 있는 객체 DTO와 동일한 개념이나 차이점은 Read–Only 속성 객체이다. 간단한 독립체( Entity )를 의미하는 작은 객체를 의미한다. **VO vs DTO DTO (Data Transfer Object) 계층간 데이터 교환을 위한..
VO(Value Object) 데이터 그 자체로 의미 있는 것을 담고 있는 객체이다. DTO와 동일한 개념이나 차이점은 Read–Only 속성 객체이다. 간단한 독립체( Entity )를 의미하는 작은 객체를 의미한다. 관계데이터베이스의 레코드에 대응되는 자바클래스이다. 형태는 Database 레코드를 구성하는 필드들을 VO의 Attribute로 하고 해당 변수에 접근 할 수 있는 Getter와 Setter 메소드의 조합으로 클래스를 형성되어진 클래스이다. 거의 불변성을 가지고 equals()로 비교할 때 객체의 모든 값을 비교해야 한다. 색상으로 예를 들어보겠다. 색상 중에 빨강과 초록을 RGBA로 나타내면 RGBA(255,0,0,0)와 RGBA(0,255,0,0) 로 표현된다. 더 나아가서 코드명이 ..
컴포지트 패턴 (composite pattern) 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조로 만들수 있다. 클라이언트에서 개별 객체와 다른 객체들오 구성된 복합 객체(composite)를 똑같은 방법으로 다룰 수 있다. 식당 메뉴를 예로들어 생각해본다면 중첩되어 있는 메뉴 그룹과 메뉴 항목을 똑같은 구조 내에서 처리할수 있게끔 하는 것이다. 메뉴와 메뉴항목을 같은 구조에 집어넣어서 부분-전체 계층구조를 생성할수 있다. 이런 복합구조를 사용하면 복합 객체와 개별 객체에 대해 구분없이 똑같은 작업을 적용할 수 있다. 컴포지트 패턴 클래스 다이어그램 컴포지트 패턴을 메뉴에 적용시켜본다면.. 우선 구성요소 인터페이스를 만드는 것부터 시작해보자. 이 인터페이스는 메뉴와 메뉴 항목 모두에 적용..
이터레이터 패턴 (iterator pattern) 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있는 방법을 제공한다. 컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어 있으면 어떤 종류의 집합체에 대해서도 사용할 수 있는 다형적인 코드를 만들수 있다. 이터레이터 패턴을 사용하면 모든 항목에 일일이 접근하는 작업을 컬렉션 객체가 아닌 반복자 객체에서 맡게 된다. 이렇게 하면 집합체의 인터페이스 및 구현이 간단해질 뿐 아니라, 집합체에서는 반복작업에서 손을 떼고 원래 자신이 할 일(객체 컬렉션 관리)에만 전념할 수 있다. 이터레이터 패턴 클래스 다이어그램 두개의 서로다른 식당이있고 각각의 식당에서 메뉴를 구현한다고 가정해보자. public class..
템플릿 메소드 패턴 (template method pattern) 메소드에서 알고리즘의 골격을 정의한다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의 할 수 있다. 알고리즘의 틀을 만들기 위한 패턴이다. 이 패턴에서 틀(템플릿)이란 일련의 단계들로 알고리즘을 정의한 메소드다. 여러 던계 가운데 하나 이상이 추상 메소드로 정의되며, 그 추상 메소드는 서브클래스에서 구현된다. 이렇게 하면 서브클래스에서 일부분의 단계를 구현할 수 있도록 하면서도 알고리즘의 구조는 바꾸지 않아도 되도록 할 수 있다. 템플릿 메소드 패턴 클래스 다이어그램 커피와 차가 만들어 지는법을 비교해보자. 1. 커피 만드는 법..
퍼사드 패턴 (Facade Pattern) 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할수 있다. 패턴을 사용할때는 항상 패턴이 어떤 용도로 쓰이는지를 잘 알아둬야 한다. 퍼사드 패턴은 단순화된 인터페이스를 통해서 서브시스템을 더 쉽게 사용할 수 있도록 하기위한 용도로 쓰인다. 홈씨어터로 퍼사드 패턴을 구현해보자. 전선과 프로젝터를 설치하고, 각 장치들을 케이블로 연결하고 등등 여러 인터페이스들이 나열되어 있다. DVD영화를 보려고하면.. 1. 팝콘 기계를켠다. 2. 팝콘 튀기기 시작. 3. 전등을 어둡게 조절 4. 스크린을 내린다. .. .. 12. DVD 플레이어를 켠다 13. DVD를 재생한다. p..
어댑터 패턴 (Adapter Pattern) 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할수 있다. 이렇게 함으로써 클라이언트와 구현된 인터페이스를 분리시킬 수 있으며, 향 후 인터페이스가 바뀌더라도 그 변경 내역 은 어댑터에 캡슐화 되기 때문에 클라이언트는 바뀔 필요가 없어진다. 어댑터 패턴 클래스 다이어그램 전기 콘센트를 보면 이해가 쉽다. 한국의 표준 플러그를 일본에 전원 소켓에 바로끼워줄수 없어 동그랑 모양을 일자로 바꿔주는 어댑터를 끼워주어야 한다. 이와같이 어댑터는 소켓의 인터페이스를 플러그에서 필..
커맨드 패턴 (Command Pattern) 요구사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을수 있다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할수 도있으며 작업취소 기능도 지원가능 하다. 커맨드 객체는 일련의 행동을 특정 리시버하고 연결시킴으로써 요구사항을 캡슐화한다. 이렇게 하기 위해 행동과 리시버를 한 객체에 집어넣고 메소드 하나만 외부에 공개하는 방법을 사용한다. 커맨드 패턴 클래스 다이어그램 식당을 예로들어보자. 1. 손님이 웨이터에게 주문을 한다. 2. 웨이터가 고객의 주문을 주문서에 적는다. 3. 웨이터는 주문서를 주방에 전달하여 주문을 요청한다. 4. 요리사는 주문서에 적힌 주문대로 음식을 자신의 노하우로 만든다. 손님 == 클라이언트 웨이..
Implementing Use Cases Model-View-Controller Pattern Application data 및 logic (모델로 캡슐화 됨)은 presentation logic (뷰 및 컨트롤러로 캡슐화 됨)과 독립적이어야합니다. View는 사용자 입력 및 출력을 담당합니다. dialog box는 view의 좋은 예입니다. Controllers는 모델에서 수행 할 수 있는 허용 가능한 트랜잭션에 대한 논리를 구현합니다. Model은 세분화 된 비즈니스 로직과 데이터를 캡슐화합니다. 상호 작용을 보여주는 시퀀스 다이어그램은 다음과 같습니다: The Entity-Control-Boundary Pattern ECB (Entity-Control-Boundary Pattern)는 Model-V..
싱글턴 패턴 (Singleton Pattern) 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴. 클래스에서 자신의 단 하나뿐인 인스턴스를 관리하도록 만든다. 다른 어떤클래스에서도 자신의 인스턴스를 추가로 만들지 못하도록 해야한다. 싱글턴 클래스 다이어그램 고전적인 싱글턴 패턴 구현법 (어떤 문제가 있을까?) public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); ..
- Total
- Today
- Yesterday