Key Design Patterns & Architectural Matters
IoC / Inversion of Control
the idea that an application is controlled from the top down
SoC / Separation of Concerns
the idea that a class (aspect) should do one job and do it well
SAI / SoAI / Separation of API from Implementation
the idea that you define and code to work interfaces
AOP / Aspect Oriented Programming
mostly lightweight nowadays where you add a chain of interceptors around a method call that can handle orthogonal concerns
COP / Component Oriented Programming
the idea that you decompose your software into components
DecP / Declarative Programming
where you use a declarative-style language (usually xml) to determine things like component wiring (i.e. your average tomcat config file, generalized)
EBP / Event Based Programming
basically making the inter-object method call asynchronous and encapsulating such a call into some kind of event object that can be queued, modified, etc
Patterns details here
