Holub on Patterns
4. 소형 데이터베이스 구현하기
어떤 DB?
• 일단 작고…• 간단히 파일로 저장할 수 있고…• SQL 도 적당히 썼으면 싶고…• 가끔은 내 맘 편히 쓰고도 싶고…• 간단히 아무 데나 붙여 쓸 수 있고…• 언젠가 제대로 된 DB 로 바뀔지도…• 윈도우에서도 쓰고 , 아이폰에서도 쓰고 싶고…
p262
일단 크게 나누자 ~p264
JDBC
SQL
데이터 저장
Database <-> Table, BridgeTableFactory <<Singleton>>
DatabaseTable
<<interface>>
ConcreateTableBridge
Abstraction
Implementor
Concrete ImplementorPosibleFutureRefinement Refined Abstraction
P264, p276
데이터는 Table 로 관리한다 .• Table 에 데이터를 입력하고 ,• Table 에서 데이터를 삭제하고 ,• Table 에서 데이터를 수정하고 ,• Table 에서 데이터를 조회하고 , 합치고 , 나누고• 그러한 결과는 Table 로 나오고 ,• Table 을 저장하는 기능도 있고 ,• Table 을 불러오기 기능도 있고 ,
p265
그러면 이렇게 하면 되겠네 ..
Table
+ ()데이타입력+ ()데이타조회+ ()데이타수정+ ()데이타수정취소+ ()저장+ ()불러오기
p267
단일 책임의 원칙 .. SRPTable
+ ()데이타입력+ ()데이타조회+ ()데이타수정+ ()데이타수정취소+ ()저장+ ()불러오기 Cursor
Selector
Undo
Table.Importer
Table.Exporter ConcreteTable
SQL(Database)
p267
테이블 생성 , Abstract Factory
TableFactory <<Singleton>>
Abstract Factory 1
Concreate Factory
Concrete Product
Abstract ProductTable
<<interface>>
ConcreateTable
p275
테이블 저장 , BuilderTable.Exporter<<interface>>
JTableExporter
JTable
Builder
Product
Concrete Builder
CSVExporter
Writer
Concrete Builder
Product
Director
ConcreateTable
Builder
p280
테이블 저장 , IteratorConcreateTable
CSVExporter
Iterator 2<<Internal>>
Iterator
Concrete Iterator
Concrete Aggregate
Table.Exporter<<interface>>
테이블 조회 , Iteratorp296
Table<<interface>>
Cursor<<interface>>
ConcreateTable
Results
Iterator 1<<External>>
Concrete Iterator
Concrete Aggregate
Aggregate
Iterator
테이블 조회 , Abstract Factory
p301
ConcreateTable
Table<<interface>>
Abstract Factory
Concrete Factory
Abstract Factory 2
Abstract Product
Cursor<<interface>>
Concrete Product
Results
트랜잭션 (Undo), CommandConcreateTable
Undo<<interface>>
UndoInsert
UndoUpdate
UndoDelete
Command
Invoker and ReceiverCommand
Concrete Command
p306
P309,트랜젝션 스택
테이블 수정 , 삭제 , 셀렉트 , 조인에 해당하는 rows 값찾기 Strategy
Selector<<interface>>
ConcreateTable
Selector.Adapter
Database 클래스의 익명 내부 클래스들
Strategy
Context
Concrete Strategy
Strategy
p312
테이블 변형 , DecoratorTable
<<interface>>
ConcreateTable
UnmodifiableTable
Decorator
Decorator
Component
Concrete Component
Recommended