extending a base product for multiple customers
play

Extending a Base Product for Multiple Customers Denis Defreyne - PowerPoint PPT Presentation

ESUG 2012 Extending a Base Product for Multiple Customers Denis Defreyne MediaGeniX NG 1 2 Your product is cool, but its missing feature X! CUSTOMER 3 Yes, feature X would be nice for you, but nobody else! YOU 4


  1. Super models in modules Module ¡>> ¡buildSuperModelWith: ¡aBuilder ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡for: ¡aClass "nothing ¡by ¡default" FRAMEWORK 85

  2. Super models in modules ContractPresentModule ¡>> ¡buildSuperModelWith: ¡aBuilder ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡for: ¡aClass aClass ¡buildSuperModel ForContractModule With: aBuilder. BASE 86

  3. Extensions in modules 87

  4. Extensions in modules FilmEditor ¡class ¡>> ¡form form ¡:= ¡self ¡newForm. form ¡addFormField: ¡#title. form ¡addFormField: ¡#duration. ^form BASE 88

  5. Extensions in modules FilmEditor ¡class ¡>> ¡form form ¡:= ¡self ¡newForm. W R O N G form ¡addFormField: ¡#title. form ¡addFormField: ¡#duration. form ¡addFormField: ¡#contract. ^form BASE 89

  6. Extensions in modules FilmEditor ¡class ¡>> ¡form form ¡:= ¡self ¡newForm. form ¡addFormField: ¡#title. form ¡addFormField: ¡#duration. ContractModule ¡current addFieldsTo: ¡form ¡for: ¡self. ^form BASE 90

  7. Extensions in modules ContractPresentModule ¡>> ¡ ¡addFieldsTo: ¡aForm ¡ ¡for: ¡anEditor anEditor ¡addContractFieldsTo: ¡aForm BASE 91

  8. Extensions in modules FilmEditor ¡>> ¡ ¡addContractFieldsTo: ¡aForm ¡ ¡aForm ¡addFormField: ¡#contract. BASE 92

  9. Extensions in modules ContractAbsentModule ¡>> ¡ ¡addFieldsTo: ¡aForm ¡ ¡for: ¡aSender ¡ ¡ "nothing ¡by ¡default" BASE 93

  10. Extensions in modules CONTRACT 94

  11. Extensions in modules CONTRACT 95

  12. Site classes vs. modules Modules can be shared across sites ‣ Modules require hooks ‣ 96

  13. Recap 97

  14. Techniques Use site classes ‣ whenever possible Use behaviors ‣ when site classes fail (inheritance trees) Use modules ‣ when you need more separation 98

  15. Requirements Be customer-specific (with packages) ‣ Be fine-grained (with site classes) ‣ Allow merging bugfixes (with packages) ‣ Be decoupled (with site classes and modules) ‣ 99

  16. “ Your product is cool, but it’s missing feature X! “ — CUSTOMER Do not worry. We’ll implement it for you! — YOU 100

Recommend


More recommend