4+1 View Model design arch
Logical View => class & state diagram
Development View => component & package diagram
Physical view => deployment diagram
Process View => sequence,activity diagram
Scenarios => Use case
CQRS (Command Query Seperation)
This principle states that either the method should command (change the persistent state) or query (read) the stored info but NOT BOTH
In real world, the ratio of update an info is less than retrieval of the info. Example, ration 1:4 (1 time => update, 4=> times read)
SOLID Principle
Single Responsibility Principle: it should have only one reason to change. ie., it should do only one job
Open Closed Principle: Objects or entities should be open for extension but closed for modification
Liskov substitution Princple: Objects should be replaceble by its subtype
Interface Segregation Principle: don't force client to implement all methods of interfance instead comeup with client specific interface
Dependency Inversion Principle: a class should depend on abstraction and not conceretion (ie., design by interface). High level module should not depend on low level
module but they dependend on abstractions
Gang of Four (23 pattern)
Creational Pattern
1) Abstract
2) Builder
3) Factory
4) Prototype
5) Singleton
Structural Pattern
6) Adapter
7) Bridge
8) Composite
9) Decorator
10) Facade
11) Flyweight
12) Proxy
Behavioural Pattern
13) Mediator
14) Momemtum
15) Iterator
16) Interpreter
17) Chain of Responsibility (CoR)
18) Command
19) State
20) Strategy
21) Observer
22) Template
23) Visitor