51
Object Oriented Design SOLID principles dmitry.kandalov@db.

Solid principles

Embed Size (px)

DESCRIPTION

Slides with notes from my talk about SOLID principles.

Citation preview

Page 1: Solid principles

Object Oriented Design

SOLID principles

[email protected]

Page 2: Solid principles

Why?

Page 3: Solid principles

Why I still program?

Page 4: Solid principles

NO hacking

NO nerds

NO bit-twiddling

Page 5: Solid principles

Literate programming

Page 6: Solid principles
Page 7: Solid principles

Why design?

Page 8: Solid principles

maintenance

less bugs

reuse?

Page 9: Solid principles

peace of mind

satisfaction

fun

Page 10: Solid principles

principles != rules

Page 11: Solid principles

Single Responsibility

Principle

Page 12: Solid principles

Portfolio

Book

InstrumentPosition

value: double

Page 13: Solid principles
Page 14: Solid principles
Page 15: Solid principles
Page 16: Solid principles

Main

ServiceClient

2: new 3: use

1: new

4: use

Page 17: Solid principles

Main

ServiceClient

Context

2: use

3: use

1.2: new 1.1: new

1: new

Page 18: Solid principles

Open/Closed Principle

Page 19: Solid principles

TG

<<interface>>

BPCListener

<<interface>>

BPCManager

<<interface>>

SnapshotProvider

uses

supply

notify

requests

create

Page 20: Solid principles
Page 21: Solid principles
Page 22: Solid principles
Page 23: Solid principles
Page 24: Solid principles
Page 25: Solid principles

OCP is emergent

Page 26: Solid principles

Liskov Substitution Principle

Page 27: Solid principles
Page 28: Solid principles
Page 29: Solid principles
Page 30: Solid principles
Page 31: Solid principles

@IViolateLSP

Page 32: Solid principles

Interface Segregation Principle

Page 33: Solid principles
Page 34: Solid principles

BookPositionNode

<<interface>>

ResubscribingNode AbsPosNode

StateMachine

NodeUser

uses

uses

Page 35: Solid principles

<<interface>>

BigService

<<interface>>

Service1<<interface>>

Service2<<interface>>

Service3

Client1 Client2 Client3

Page 36: Solid principles

Dependency Inversion Principle

Page 37: Solid principles

Client Service

Page 38: Solid principles

Client<<interface>>

Service

ServiceImpl

Page 39: Solid principles

Client

<<interface>>

ServiceServiceImpl

client

service

Page 40: Solid principles

Client<<interface>>

Service

ServiceImpl

client

service

Page 41: Solid principles

Client<<interface>>

Service

ServiceImpl

client

service

api

Page 42: Solid principles
Page 43: Solid principles

SRP

OCP

LSP

ISP

DIP

Page 44: Solid principles

REP

CRP

CCP

ADP

SDP

SAP

Page 45: Solid principles

What else?

Page 46: Solid principles

idea code

Page 47: Solid principles

F**k Design

Page 48: Solid principles

Zen Coding

Page 49: Solid principles

not scalable

totally art

Page 50: Solid principles
Page 51: Solid principles

Thanks!