SlideShare una empresa de Scribd logo
SEA



Twitter @masuda220
u
u
u



u
u




    u
    u



        u
        u
¡
    §   (xix      )


    §
    §
¡
    §      Java, Spring, MyBatis, Velocity
    §          RDRA, ICONIX
    §
ドメイン駆動設計 実践ガイド
¡


    by

¡



¡
ドメイン駆動設計 実践ガイド
¡
    §
    §



¡
    §
    §

    § ICONIX
               (
¡
    §


    §

¡
    §
    §
    §
ドメイン駆動設計 実践ガイド
¡   -ing
    § Never Ending Story
¡   Evolving
    §
    §
    §
¡   Pervading
    §
    §
    §
    §
¡   Binding
    §
    §
¡
    §
    §
    §
¡
    §
    §
¡
    §   (
    §
¡

¡

¡

¡

¡

    § Putting the Domain Model to Work
The Building Blocks of a Model-Driven Design
¡
    §
    §
¡
    §
        RDRA + ICONIX

¡
    §
UI
UI
UI

                                                                 << interface >>

                                                                  () : void
        << application controller >>                                  (     ) : Boolean




                                                   << interface >>
<< domain object >>
                                       Thank You             (       ) : void
                                                            (       ) :void
 () :
Spring



                        UI
                                          Spring Web Flow
Velocity                     Spring MVC

Spring Bind
Bean Validation                     Spring ORM
                                          MyBatis SQL

                                    Spring Mail
           << domain object >>
                                             Apache James

            () :                     Spring JMS
                                                  ActiveMQ
                                                  Mule ESB
¡   RDRA   ICONIX
¡
    §

¡
    §

    §
    §

    §
( CONIX)




                     Java



DDL/SQL
ドメイン駆動設計 実践ガイド
Whole-Part


   <<interface>>

                   <<structurer>>

                   <<controller>>           <<coordinator>>
                      If/for


                                <<information holder>>


                                    <<service provider>>
¡   Associations
    §
¡   Entities (key)
    §
¡   Value Objects (value)
    §
¡   Services
    §
¡   Modules
    §
¡
    Whole-Part
¡
    §
    §   (   )
    §
    §
    §
¡
    § String, BigDecimal, Date(long)
    §

    §

        set

              String
¡


    §       .
    §   +

                UUID


¡
¡
    §
    §
¡       ( domain event )
    §
    §          <    >
¡
¡
¡
ドメイン駆動設計 実践ガイド
¡
 ¡
       §
       §


                 class CustomerList
                {
                  private List<Customer> customers ;

                    int numberOfCustomers();
                    void add( Customer customer );
       ()       }
add(        )
¡                                        by Hruby
    §
    §
¡                       by Fowler
    §     A.1.5
¡                                          by
    §
¡   UML                             by
    §
¡   The Data Model Resource Book 1,2,3
¡   Data Model Patterns by Hay
¡       (   )
    §
    §



    §



¡
    §
    §
    §
¡
¡

    § Aggregates
    § Factories
    § Repositories
    § Transfers
¡
¡

¡

¡
    §   Aggregate

    §
¡
    § Insert, update, delete
¡
    §
    §                          ...
    §
¡
    §

    §
¡
    §
    §
    §
¡
    §
    §
¡
    §
    § RESTful   Web
    §
    §
    §
¡
    §
¡
    §
¡
    §

¡       getter/setter
    §
¡
¡
¡
¡

    §
    §
    §
Refactoring Toward Deeper Insight
¡
    §
    §
    §
¡
    §
    §
    §
    §
¡
    §

    §
¡


¡
    §
    §
¡
    §

    §
¡

¡
    private List<    >          ;
     If
¡
    private                ;
    private List<    >              ;


¡
                = List<   >#get(0)
¡
    §
    §
    §

    §
¡
    §
    §
    §
    §
    §
¡
    §
    §
¡

¡
    §
    §
    §
¡       passive
                  active
¡
    §
    §
    §
    §
¡
    §
¡
    §
¡
    §
¡
    §
    §
        [size < max]
¡
    § Policy
        Rule
        OverbookingPolicy, CancelPolicy,
    § Criteria

    § Scheme
        Pricing Scheme, Identification Scheme ,
¡
    §
    §

    §

    § Procedure
¡
    § Fowler

    § Eriksson, Penker UML
                             Process-Process Instance
¡
    §
    § EventType <<enum>>, StateType <<enum>>
    § Map<StateType, List<StateType> >
    § Map<StateType, List<EventType>>
    §
¡
    §



    §
¡
¡
is    ()
                                                           ()
                                                           ()
If ( date.before( SUMMER_START )
                                                  If ( isSummer( date ) )
      || date.after( SUMMER_END ) )
                                                  {
{
                                                     charge = summerCharge() ;
   charge = quantity * winterRate + winterFee ;
                                                  }
}
                                                  else
else
                                                  {
{
                                                     charge = winterCharge()
   charge = quantity * summerRate ;
                                                  }
}
                                                  (124)
                                                  (110)
                                                  (149)
¡
    §



¡
    §
          overview


    § (   )
¡
¡


¡
¡
¡
Strategic Design
¡
    §         Context(
    § Context
¡                   Distillation
    §
    § Core Domain, Domain Vision Statement, Highlighted
        Core,
¡
    §
¡   Bounded Context   Context Map
    §
    §
    § As-Is
¡
    §
    §
    §
    §
                           Java, .Net, PHP,
    §
        SLA,          ,
¡   Shared Kernel
¡   Customer/Supplier Development Team
¡   Conformist
¡   Anticorruption Layer
¡   Separate Ways
¡   Open Host Service
¡   Published Language
¡   Single Bounded Context
¡   Shared Kernel
    §
    §
¡   Anticorruption Layer
    §
    §
¡   Open Host Service
¡   Published Language
    §
¡   Single Bounded Context
    §
¡



¡

¡
    §
¡
    §
    §
¡
    §
    §
    §
¡



                  Context
        Context
¡   Separate Ways
    § Bounded Context
    §
    §



    §
¡
    §
    §
        URI sheme:code
    §

    §

        Fire and Forget
¡
    §
    §                     XML   Key-Value
    §
¡
¡
¡
¡


¡
¡
    §
    §

Más contenido relacionado

ドメイン駆動設計 実践ガイド

  • 2. u u u u u u u u u
  • 3. ¡ § (xix ) § § ¡ § Java, Spring, MyBatis, Velocity § RDRA, ICONIX §
  • 5. ¡ by ¡ ¡
  • 7. ¡ § § ¡ § § § ICONIX (
  • 8. ¡ § § ¡ § § §
  • 10. ¡ -ing § Never Ending Story ¡ Evolving § § § ¡ Pervading § § § § ¡ Binding § §
  • 11. ¡ § § § ¡ § § ¡ § ( §
  • 12. ¡ ¡ ¡ ¡ ¡ § Putting the Domain Model to Work
  • 13. The Building Blocks of a Model-Driven Design
  • 14. ¡ § § ¡ § RDRA + ICONIX ¡ §
  • 15. UI
  • 16. UI
  • 17. UI << interface >> () : void << application controller >> ( ) : Boolean << interface >> << domain object >> Thank You ( ) : void ( ) :void () :
  • 18. Spring UI Spring Web Flow Velocity Spring MVC Spring Bind Bean Validation Spring ORM MyBatis SQL Spring Mail << domain object >> Apache James () : Spring JMS ActiveMQ Mule ESB
  • 19. ¡ RDRA ICONIX ¡ § ¡ § § § §
  • 20. ( CONIX) Java DDL/SQL
  • 22. Whole-Part <<interface>> <<structurer>> <<controller>> <<coordinator>> If/for <<information holder>> <<service provider>>
  • 23. ¡ Associations § ¡ Entities (key) § ¡ Value Objects (value) § ¡ Services § ¡ Modules §
  • 24. ¡ Whole-Part
  • 25. ¡ § § ( ) § § §
  • 26. ¡ § String, BigDecimal, Date(long) § § set String
  • 27. ¡ § . § + UUID ¡
  • 28. ¡ § § ¡ ( domain event ) § § < > ¡ ¡ ¡
  • 30. ¡ ¡ § § class CustomerList { private List<Customer> customers ; int numberOfCustomers(); void add( Customer customer ); () } add( )
  • 31. ¡ by Hruby § § ¡ by Fowler § A.1.5 ¡ by § ¡ UML by § ¡ The Data Model Resource Book 1,2,3 ¡ Data Model Patterns by Hay
  • 32. ¡ ( ) § § § ¡ § § §
  • 33. ¡ ¡ § Aggregates § Factories § Repositories § Transfers
  • 34. ¡ ¡ ¡ ¡ § Aggregate §
  • 35. ¡ § Insert, update, delete ¡ § § ... § ¡ § §
  • 36. ¡ § § § ¡ § § ¡ § § RESTful Web § § §
  • 37. ¡ § ¡ § ¡ § ¡ getter/setter §
  • 38. ¡ ¡ ¡ ¡ § § §
  • 40. ¡ § § § ¡ § § § § ¡ § §
  • 41. ¡ ¡ § § ¡ § §
  • 42. ¡ ¡ private List< > ; If ¡ private ; private List< > ; ¡ = List< >#get(0)
  • 43. ¡ § § § §
  • 44. ¡ § § § § § ¡ § §
  • 45. ¡ ¡ § § § ¡ passive active
  • 46. ¡ § § § §
  • 47. ¡ § ¡ § ¡ §
  • 48. ¡ § § [size < max] ¡ § Policy Rule OverbookingPolicy, CancelPolicy, § Criteria § Scheme Pricing Scheme, Identification Scheme ,
  • 49. ¡ § § § § Procedure ¡ § Fowler § Eriksson, Penker UML Process-Process Instance
  • 50. ¡ § § EventType <<enum>>, StateType <<enum>> § Map<StateType, List<StateType> > § Map<StateType, List<EventType>> § ¡ § §
  • 51. ¡ ¡
  • 52. is () () () If ( date.before( SUMMER_START ) If ( isSummer( date ) ) || date.after( SUMMER_END ) ) { { charge = summerCharge() ; charge = quantity * winterRate + winterFee ; } } else else { { charge = winterCharge() charge = quantity * summerRate ; } } (124) (110) (149)
  • 53. ¡ § ¡ § overview § ( )
  • 56. ¡ § Context( § Context ¡ Distillation § § Core Domain, Domain Vision Statement, Highlighted Core, ¡ §
  • 57. ¡ Bounded Context Context Map § § § As-Is ¡ § § § § Java, .Net, PHP, § SLA, ,
  • 58. ¡ Shared Kernel ¡ Customer/Supplier Development Team ¡ Conformist ¡ Anticorruption Layer ¡ Separate Ways ¡ Open Host Service ¡ Published Language ¡ Single Bounded Context
  • 59. ¡ Shared Kernel § § ¡ Anticorruption Layer § § ¡ Open Host Service ¡ Published Language § ¡ Single Bounded Context §
  • 60. ¡ ¡ ¡ § ¡ § §
  • 61. ¡ § § § ¡ Context Context
  • 62. ¡ Separate Ways § Bounded Context § § §
  • 63. ¡ § § URI sheme:code § § Fire and Forget ¡ § § XML Key-Value §
  • 65. ¡ ¡ ¡ § §