More Related Content
Similar to DevLOVE Beautiful Development - 第一幕 陽の巻
Similar to DevLOVE Beautiful Development - 第一幕 陽の巻 (20)
More from 都元ダイスケ Miyamoto
More from 都元ダイスケ Miyamoto (20)
DevLOVE Beautiful Development - 第一幕 陽の巻
- 1. DDD Pt.II
Building Blocks
~DDD ~
( ) - tricreo.jp / Jiemamy Project - jiemamy.org
2011.04.09 @
- 2. • (@daisuke_m)
• Jiemamy / java-ja
• Apache Mahout
• Java / OO / DDD
•
- 3. works
• @IT — Jiemamy
•
• Java
• Java
• Java: The Good Parts ( )
• DDD ( )
- 4. DDD
http://d.hatena.ne.jp/daisuke-m/20110407/1302156870
• Jiemamy Project
•
•
• DDD
•
• Jiemamy version 0.3
• baseunits library (timeandmoney)
- 5. Jiemamy
• ER
• Eclipse (UI )
• DB , SQL ( )
• SQL…
• XML I/O, DDD ( )
- 8. DDD PATTERNS
• STRATEGY • OPEN HOST SERVICE
• COMPOSITE • CORE DOMAIN
• BOUNDED CONTEXT • GENERIC SUBDOMAINS
• CONTINUOUS INTEGRATION • DOMAIN VISION STATEMENT
• CONTEXT MAP • HIGHLIGHTED CORE
• SHARED KERNEL • COHESIVE MECHANISMS
• CUSTOMER/SUPPLIER DEVELOPMENT TEAMS • SUGGESTED CORE
• CONFORMIST • ABSTRACT CORE
• ANTICORRUPTION LAYER • EVOLVING ORDER
• SEPARATE WAYS • SYSTEM METAPHOR
• OPEN HOST SERVICE • RESPONSIVILITY LAYERS
• PUBLISHED LANGUAGE • KNOWLEDGE LEVEL
• INTEGRATION • PLUGGABLE COMPONENT FRAMEWORK
- 9. DDD PATTERNS
• UBIQUITOUS LANGUAGE • FACTRIES
• MODEL-DRIVEN DESIGN • REPOSITORIES
• HANDS-ON MODELERS • SPECIFICATION
• LAYERED ARCHITECTURE • INTENTION-REVEALING
INTERFACES
• THE SMART UI "ANTI-PATTERN"
• SIDE-EFFECT-FREE
FUNCTION
• ENTITIES
• VALUE OBJECTS • ASSERTIONS
• SERVICES • CONCEPTUAL CONTOURS
• MODULES • STANDALONE CLASSES
• AGGREGATES • CLOSURE OF OPERATIONS
- 15. • →
• →
• ®
•
•
• ®
•
•
- 17. •
•
•
• Model Driven Design ( )
•
- 18. Model or Not
• LibHTTP • User
• Search • File
• FacebookLogin • String
• Translation • StringBuilder
• FoobarLogic • YearMonth
- 21. Jiemamy
DiagramEditor
TableView
DbObjectEditPart maven-jiemamy-plugin UI
jiemamy eclipse plugin ExecuteMojo Application
jiemamy-diagram JmDiagram
JmNode / JmConnection
SqlStatement jiemamy-sql Domain
Token JmTable / JmView
JmColumn
jiemamy-core JmForeignKeyConstraint
woodstox
SqlExecutor / UUIDProvider
XMLInputFactory Infrastructure
XMLValidationSchema
jiemamy-commons
apache commons
- 23. UI DB
User#save(); → DB
toString() ! "<span>...</span>"
- 24. §2
•
•
• 3
• ENTITY (E)
• VALUE OBJECT (VO)
• SERVICE
- 25. •
•
•
• Table knows Columns / Column knows Table
• Emp knows Dept / Dept knows Emps
- 26. class Emp { class Dept {
String name; String name;
Dept dept; List<Emp> members;
} }
Dept tech = new Dept(" ");
Emp kato = new Emp(" ");
kato.setDept(tech);
tech.addMember(kato);
- 30. • 31 32
31
(File / DB)
32
(On Memory)
•
• Serialize / Deserialize clone…
- 31. ENTITY
• Table • Order
• Column • Customer
• ForeignKey
• Employee
• Department
- 34. E
Column col = ...; // ← ENTITY
tableFoo.addColumn(col);
tableBar.addColumn(col);
// something
tableFoo.getColumn(...).setName("AAA");
tableBar
- 36. VALUE OBJECT (VO)
•
•
• new String("foo") vs new String("foo")
• man.getName(): String
• equals hashCode property
- 41. • E / VO
• E / VO
• E / VO
• Transaction Script
•
- 45. MVC
• com.example.foobar •com.example.foobar
• model • foo
• FooModel • FooModel
• BarModel • FooView
• view UL • FooController
• FooView • bar
• BarView • BarModel
• controller • BarView
• FooController • BarController
• BarController
- 46. MVC
• com.example.foobar •com.example.foobar
• model • foo
• FooModel • FooModel
• BarModel • FooView
• view UL • FooController
• FooView • bar
• BarView • BarModel
• controller • BarView
• FooController • BarController
• BarController
- 49. E
• LifeCycle Object LifeCycle
• User
• JVM
- 54. Obj.
•
• Obj.
• Obj.
• Factory Obj.
- 56. • Entity LifeCycle
• LC Entity
• new
• On Memory Collection
• Database
- 57. Repos. Collection
• DB
• Repository
Collection
• store / delete / find (resolve) ...
- 58. Declaration & Reference
CREATE TABLE FOOBAR (
FOO INTEGER,
BAR VARCHAR(32), Decl. = Entity
PRIMARY KEY (FOO),
FOREIGN KEY (BAR) Ref. = VO
(ID)
REFERECE BAZ (QUX)
);
Table has-a Column(s) and ...
PrimaryKey has-a ColumnReference
- 59. • /
•
ENTITY / VO / SERVICE
•
FACTORY / REPOSITRY
• DDD