why are analysis patterns not as popular as design patterns? i.e. template models to be tweaked per your particular domain modeling endeavor; "a kit of model fragments" (E.Evans);
they remove the need to reinvent the wheel e'ytime you need to model a domain. like a framework or library of concepts. like a react/angular/springboot for model concepts? not the best analogy but it'll do 🤓
analysis patterns - are descriptions of domain elements that are customised to solve a general domain-analysis problem in a particular context
domain/model patterns - are descriptions of communicating concepts and subsystems that are customised to solve a general modeling problem in a particular context e.g. closure of operations
design patterns - are descriptions of communicating objects and classes that are customised to solve a general design problem in a particular context e.g. factory
the key difference between a design pattern and a model/domain pattern, is that the former addresses technical (class level) design, while the latter addresses the more interesting half of software - the conceptual patterns of the domain (business subject matter)
some of the known gang of four design patterns can also play as model patterns, namely the #StrategyPattern and the #CompositePattern (ref the blue book E.Evans)
the cool thing about all this is that we can look at those design patterns with a fresh perspective - from merely classes and interfaces - to a more holistic pov of concepts, meanings, conversations about what's going on in each business/use case that we're designing n coding to
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Domain Driven Design (DDD) made plain broke down to the bone gristle. cus i need that science to level up my code, but miss me with all the stuffy acronyms and jargon. 🧵
domain
- the actual problem
- what we're trying to solve with the code for the user
- the set of problems that the users ask the developers to solve
- the subject matter
domain driven
- problem focused
- to stay focused on the actual problem
For me, when the need for a new language, library, framework, shiny thing, etc pops up - i find that i usually take the same general steps
and the 7-bullet list i jotted down in my notes became this thread:
1. pick a language, any language. or framework, library etc.
no tech is perfect. don't sweat it the choice too much. they all have pros and cons - but do try to pick one that has good community adoption so you can get help when you run into blockers
"Always implement things when you actually need them,
never when you just foresee that you need them." - Ron Jeffries
i feel attacked 🙄
(over-abstraction is one of my guilty pleasures) 😅
like, sometimes i'll take that advice to "code to the interface" to the extreme, just cus i can, and i'll make everything an interface. what you can do with polymorphism and dependency injection is fun ...
but man is it an over-abstraction time suck when trying to just focus on "keeping it simple" KISS minimum viable product. gotta draw the line somewhere and make concrete classes and move forward ...