15
Holub on Patterns 4. 소소 소소소소소소 소소소소

holubonpatternschapter41

  • Upload
    dagri82

  • View
    422

  • Download
    1

Embed Size (px)

Citation preview

Page 1: holubonpatternschapter41

Holub on Patterns

4. 소형 데이터베이스 구현하기

Page 2: holubonpatternschapter41

어떤 DB?

• 일단 작고…• 간단히 파일로 저장할 수 있고…• SQL 도 적당히 썼으면 싶고…• 가끔은 내 맘 편히 쓰고도 싶고…• 간단히 아무 데나 붙여 쓸 수 있고…• 언젠가 제대로 된 DB 로 바뀔지도…• 윈도우에서도 쓰고 , 아이폰에서도 쓰고 싶고…

p262

Page 3: holubonpatternschapter41

일단 크게 나누자 ~p264

JDBC

SQL

데이터 저장

Page 4: holubonpatternschapter41

Database <-> Table, BridgeTableFactory <<Singleton>>

DatabaseTable

<<interface>>

ConcreateTableBridge

Abstraction

Implementor

Concrete ImplementorPosibleFutureRefinement Refined Abstraction

P264, p276

Page 5: holubonpatternschapter41

데이터는 Table 로 관리한다 .• Table 에 데이터를 입력하고 ,• Table 에서 데이터를 삭제하고 ,• Table 에서 데이터를 수정하고 ,• Table 에서 데이터를 조회하고 , 합치고 , 나누고• 그러한 결과는 Table 로 나오고 ,• Table 을 저장하는 기능도 있고 ,• Table 을 불러오기 기능도 있고 ,

p265

Page 6: holubonpatternschapter41

그러면 이렇게 하면 되겠네 ..

Table

+ ()데이타입력+ ()데이타조회+ ()데이타수정+ ()데이타수정취소+ ()저장+ ()불러오기

p267

Page 7: holubonpatternschapter41

단일 책임의 원칙 .. SRPTable

+ ()데이타입력+ ()데이타조회+ ()데이타수정+ ()데이타수정취소+ ()저장+ ()불러오기 Cursor

Selector

Undo

Table.Importer

Table.Exporter ConcreteTable

SQL(Database)

p267

Page 8: holubonpatternschapter41

테이블 생성 , Abstract Factory

TableFactory <<Singleton>>

Abstract Factory 1

Concreate Factory

Concrete Product

Abstract ProductTable

<<interface>>

ConcreateTable

p275

Page 9: holubonpatternschapter41

테이블 저장 , BuilderTable.Exporter<<interface>>

JTableExporter

JTable

Builder

Product

Concrete Builder

CSVExporter

Writer

Concrete Builder

Product

Director

ConcreateTable

Builder

p280

Page 10: holubonpatternschapter41

테이블 저장 , IteratorConcreateTable

CSVExporter

Iterator 2<<Internal>>

Iterator

Concrete Iterator

Concrete Aggregate

Table.Exporter<<interface>>

Page 11: holubonpatternschapter41

테이블 조회 , Iteratorp296

Table<<interface>>

Cursor<<interface>>

ConcreateTable

Results

Iterator 1<<External>>

Concrete Iterator

Concrete Aggregate

Aggregate

Iterator

Page 12: holubonpatternschapter41

테이블 조회 , Abstract Factory

p301

ConcreateTable

Table<<interface>>

Abstract Factory

Concrete Factory

Abstract Factory 2

Abstract Product

Cursor<<interface>>

Concrete Product

Results

Page 13: holubonpatternschapter41

트랜잭션 (Undo), CommandConcreateTable

Undo<<interface>>

UndoInsert

UndoUpdate

UndoDelete

Command

Invoker and ReceiverCommand

Concrete Command

p306

P309,트랜젝션 스택

Page 14: holubonpatternschapter41

테이블 수정 , 삭제 , 셀렉트 , 조인에 해당하는 rows 값찾기 Strategy

Selector<<interface>>

ConcreateTable

Selector.Adapter

Database 클래스의 익명 내부 클래스들

Strategy

Context

Concrete Strategy

Strategy

p312

Page 15: holubonpatternschapter41

테이블 변형 , DecoratorTable

<<interface>>

ConcreateTable

UnmodifiableTable

Decorator

Decorator

Component

Concrete Component