Search
moon
sun
๐Ÿ“

SRP : The Single-Responsibility Principle

Category
as S/W ์—”์ง€๋‹ˆ์–ด
Tags
SOLID
S/W Engineering
SRP
Study Note
Architecture
Created time
2009/04/14

Definition

โ€ข
ํด๋ž˜์Šค๋Š” ๋‹จ์ผ ์ฑ…์ž„ ๋งŒ์ด ๋”ฐ๋ฅด๋„๋ก. ์ข€๋” ๋‚˜์€ ํ‘œํ˜„์œผ๋กœ, ๋‹จ ํ•œ๊ฐ€์ง€์˜ ๋ณ€๊ฒฝ ์ด์œ ๋งŒ์„ ๊ฐ€์ง€๋„๋ก
โ€ข
Cohesion(์‘์ง‘๋„) ์ฆ๋Œ€ ์›์น™

SRP violated sample

public class Modem { // connection responsibility public void Dial(string pno) { /*code*/ } public void Hangup() { /*code*/ } // data channel responsibility public void Send(char c) { /*code*/ } public char Recv() { /*code*/ } }
C#
๋ณต์‚ฌ

ํŠน์ง•

โ€ข
Connection๊ณผ data channel์ด๋ž€ ๋‘ ๊ฐœ์˜ ์ฑ…์ž„์ด ๋‹จ์ผ entity๋กœ ๋ฌถ์ž„

๋ฌธ์ œ์ 

โ€ข
Connection ๋ถ€๋ถ„ code ๋ณ€๊ฒฝ์ด data channel ๋‹ด๋‹น client code์˜ ์žฌ์ปดํŒŒ์ผ, ์žฌ๋ฐฐํฌ๋ฅผ ์š”๊ตฌํ•จ

SRP complied sample

public class Connection { public void Dial(string pno) { /*code*/ } public void Hangup() { /*code*/ } } public class Channel { public void Send(char c) { /*code*/ } public char Recv() { /*code*/ } }
C#
๋ณต์‚ฌ

ํŠน์ง•

โ€ข
์ฑ…์ž„ ๋ณ„ class ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ํŠน์ • client code ์™€์˜ action ๋ณ€๊ฒฝ์ด ํƒ€ client code์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ

Conclusion

โ€ข
๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์›์น™์ด๋‚˜ ๊ฐ€์žฅ ์ง€ํ‚ค๊ธฐ ์–ด๋ ค์šด ์›์น™ ์ค‘ ํ•˜๋‚˜.
โ€ข
Application์˜ ๊ฒฝ์ง์„ฑ, ์ทจ์•ฝ์„ฑ์„ ์ œ๊ฑฐ.

References