일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- OOP
- 코드트리
- 차원축소
- python
- 기계학습
- cpp
- 코딩테스트실력진단
- Design Pattern
- 넘파이 배열
- 디자인 패턴
- 합성곱 신경망
- cpp class
- lambda
- NumPy
- 코테
- ack
- 네트워크 기초
- 데이터 분석
- Machine Learning
- 클러스터링
- c++
- 머신러닝
- 파이썬
- 자바
- 데이터 마이닝
- 넘파이 기초
- java
- numpy 기초
- 코딩테스트
- 넘파이
- Today
- Total
준비하는 대학생
[Design Pattern] SOLID 원칙 (OCP - 개방-폐쇄 원칙) 본문
SOLID 디자인 원칙 중 하나인 OCP(Open-Closed Principle)는 소프트웨어 개발에서 변경에 대한 영향을 최소화하면서 기능을 추가하거나 변경할 수 있는 설계를 만들기 위한 원칙입니다. 이번 글에서는 OCP를 따르는 자바 코드를 작성하는 방법과 이를 적용하면 어떤 장점이 있는지에 대해 자세히 알아보겠습니다.
OCP란?
OCP는 "개방-폐쇄 원칙"을 의미합니다. 이 원칙은 기존 코드를 수정하지 않으면서 기능을 추가하거나 변경할 수 있도록 설계해야 한다는 원칙입니다. OCP를 따르면 기존 코드를 수정하지 않아도 새로운 기능을 추가하거나 기능을 변경할 수 있으므로, 코드의 유지보수성과 확장성이 높아지게 됩니다.
OCP를 따르는 예시
다음은 OCP를 따르는 자바 코드의 예시입니다.
public interface Greeting {
void greet(String name);
}
public class FormalGreeting implements Greeting {
public void greet(String name) {
System.out.println("Hello, " + name + "!");
}
}
public class InformalGreeting implements Greeting {
public void greet(String name) {
System.out.println("Hey, " + name + "!");
}
}
위의 코드에서는 Greeting 인터페이스를 구현하는 FormalGreeting 클래스와 InformalGreeting 클래스가 각각 다른 인사말을 출력하도록 구현되어 있습니다. 이렇게 하면 고객의 나이에 따라 출력하는 인사말이 추가되어도 기존 코드를 수정하지 않아도 되므로, OCP를 따르게 됩니다.
OCP를 따르지 않는 예시
다음은 OCP를 따르지 않는 자바 코드의 예시입니다.
public class Customer {
private String name;
private int age;
public Customer(String name, int age) {
this.name = name;
this.age = age;
}
public void greet() {
if (age >= 18) {
System.out.println("Hello, " + name + "!");
} else {
System.out.println("Hey, " + name + "!");
}
}
}
위의 코드에서는 greet() 메서드에서 if문을 사용하여 고객의 나이에 따라 다른 인사말을 출력하고 있습니다. 만약 고객의 나이에 따라 출력하는 인사말이 추가되거나 변경되면, Customer 클래스의 코드를 수정해야 합니다. 따라서 이 코드는 OCP를 따르지 않습니다.
OCP를 따르면 얻을 수 있는 장점
OCP를 따르면 코드의 유지보수성과 확장성이 높아지게 됩니다. 기존 코드를 수정하지 않고 새로운 기능을 추가하거나 기능을 변경할 수 있으므로, 코드의 변경에 대한 영향이 최소화됩니다. 또한, 기존 코드를 수정하지 않으므로 코드의 안정성도 높아집니다.
OCP를 따르는 방법
OCP를 따르기 위해서는 기능을 추가하거나 변경할 때 기존 코드를 수정하지 않도록 설계해야 합니다. 이를 위해 추상화와 다형성을 활용하는 것이 좋습니다. 추상화를 통해 공통점을 추출하고, 다형성을 통해 각 기능을 구현하는 클래스를 분리하는 것입니다.
정리
OCP는 소프트웨어 개발에서 변경에 대한 영향을 최소화하면서 기능을 추가하거나 변경할 수 있는 설계를 만들기 위한 원칙입니다. OCP를 따르면 코드의 유지보수성과 확장성이 높아지게 되며, 기존 코드를 수정하지 않아도 새로운 기능을 추가하거나 기능을 변경할 수 있습니다. 이를 위해서는 추상화와 다형성을 활용하는 것이 좋습니다.
'Programming > Design pattern' 카테고리의 다른 글
[Design Pattern] Singleton Pattern(싱글턴 패턴) (0) | 2023.06.02 |
---|---|
[Design Pattern] 데코레이터 패턴(Decorator Pattern) (0) | 2023.04.10 |
[Design Pattern] Observer Pattern(옵저버 패턴) (0) | 2023.03.29 |
[Design Pattern] Strategy Pattern(전략 패턴) (0) | 2023.03.22 |
[Design Pattern] SOLID 원칙 (SRP-단일 책임 원칙) (0) | 2023.03.12 |