Single Responsibility Principle - XPeppers Tech Talks

Preview:

Citation preview

Single Responsibility Principle

25-09-2014

Single Responsibility Principle Open Clone Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle

Single Responsibility Principle

25-09-2014

“A module should have only one reason to change”Robert C. Martin

Single Responsibility Principle

25-09-2014

What is a reason?

Single Responsibility Principle

25-09-2014

Software is about people

Software respond to different user needs

Respond to a user need is a responsibility

Single Responsibility Principle

25-09-2014

Users can wear different hats

} } }DBA CEO OPS

Single Responsibility Principle

25-09-2014

… and sometimes more than one!

} }DBA

}

CEOOPS

Single Responsibility Principle

25-09-2014

… and of course they like to change

} }DBA }

CEO

OPS

Single Responsibility Principle

25-09-2014

So we should not bind our software on peoples

Instead we consider the role they play (CEO, OPS, DBA, ecc)

Single Responsibility Principle

25-09-2014

Example

Invoice

+ calculateSum() + store() + print()

Who this class respond to?

How many responsibilities has?

Single Responsibility Principle

25-09-2014

Invoice

+ calculateSum() + store() + print()

Policy

DBA

OPS

This class has 3 responsibilities because respond to 3 different roles

Single Responsibility Principle

25-09-2014

Fragilityhttps://www.flickr.com/photos/darcymoore/8366125743

Single Responsibility Principle

25-09-2014

Rigidityhttps://www.flickr.com/photos/gravlax/4971359205

Single Responsibility Principle

25-09-2014

We should fix it!

Single Responsibility Principle

25-09-2014

Extract Class

Invoice

+ calculateSum()

InvoiceRepository

+ store()

InvoiceReportBuilder

+ print()

Policy DBA OPS

Single Responsibility Principle

25-09-2014

Effects

• more focused classes • easier to name

Single Responsibility Principle

25-09-2014

But

We have also increased complexity

Single Responsibility Principle

25-09-2014

Tradeoffs

Single Responsibility Principle

25-09-2014

Questions?

Single Responsibility Principle

25-09-2014

Thank you!

Recommended