DESIGN PATTERN

[DESIGN PATTERN] SOLID 원칙 (객체지향 5대원칙)

본듀 2022. 12. 14. 20:01

SRP(Single Responsibility Principle)

단일 책임 원칙
소프트웨어의 설계부품(클래스, 메서드 등)은 하나의 책임만 가질 수 있도록 설계해야한다.
책임은 기능으로 해석
설계를 잘한 프로그램은 새로운 요구사항이나 오류로 인한 변경 사항이 적다.
맡은 책임이 많아질수록 결합도가 높아지기 때문에 책임을 최소화하여 결합도를 낮추고 응집도를 높이는 것이 목표

 

OCP(Open-Closed Principle)

개방-폐쇄 원칙
기존 코드를 변경하지 않고 기능을 추가하거나 수정할 수 있도록 설계하여야한다.
자주 변경될 수 있는 것들은 수정하기 쉽게, 변경되지 않는 것들은 변화에 영향을 적게!
이를 위해 쓰는 것이 Interface

예를 들어, 러닝머신을 설계한다고하면
러닝머신 클래스의 필드로 사람클래스를 선언하면 사람클래스의 객체만이 러닝머신을 이용할 수 있을 것이다.
시간이 지나 개가 러닝머신을 사용할 필요가 생기면 러닝머신 클래스를 수정해야한다.
그러나 Interface를 이용해 뛰는 행위를 지정해두고 러닝머신클래스의 필드로 선언하면
언제든 Interface를 확장한 클래스들은 러닝머신을 이용할 수 있을 것이고, 러닝머신 클래스는 수정할 필요가 없다.

이렇게되면 변경에 유연해져 유지보수 비용이 줄어들고, 가독성을 높이는 효과를 얻을 수 있다.

 

LSP(Liskov Substitution Principle)

리스코프 치환 원칙
자식클래스는 부모클래스에서 가능한 행위를 수행할 수 있도록 설계하여야 한다.
부모 클래스와 자식 클래스의 행위에는 일관성이 있어야한다는 원칙
이는 부모클래스의 객체를 사용하는 곳에서 자식클래스의 객체를 사용해도 문제가 없어야한다는 뜻

 

DIP(Dependency Inversion Principle)

의존 역전 원칙
의존 관계를 맺을 때, 변화하기 쉬운 것보다는 변화하기 어려운 것에  의존해야 한다는 원칙
변화하기 쉬운 것이란 구체화된 클래스, 어려운 것이란 추상클래스나 인터페이스를 의미한다.

따라서, DIP를 만족한다는 것은 클래스를 의존하기보다는 추상클래스나 인터페이스를 의존한다는 의미

ISP(Interface Segregation Principle)

인터페이스 분리 원칙
한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않도록 설계하여야한다.
하나의 포괄적인 인터페이스보다는 여러 개의 구체적인 인터페이스 만든다.

 

'DESIGN PATTERN' 카테고리의 다른 글

[DESIGN PATTERN] STRATEGY PATTERN  (0) 2023.01.20