Prompt Example
{개발언어}를 사용해서 {개발이론, 알고리즘} 예시 알려줘
Result
SOLID 원칙은 객체 지향 프로그래밍 및 소프트웨어 설계에서 유용한 가이드라인입니다. JAVA로 SOLID 원칙의 예시를 설명하겠습니다.
단일 책임 원칙 (Single Responsibility Principle)
java
Copy code
class BookPrinter {
void printTextQuote(Book book) {
// 책 텍스트 출력 로직
}
}
class BookParser {
String parseTextFromBook(Book book) {
// 책에서 텍스트 파싱 로직
}
}
각 클래스는 하나의 책임만 가지고 있어 변경 사항이 발생할 때 해당 모듈만 수정하면 됩니다.
개방-폐쇄 원칙 (Open/Closed Principle)
java
Copy code
interface Shape {
double calculateArea();
}
class Rectangle implements Shape {
private double width, height;
// 생성자, getter, setter 생략
@Override
public double calculateArea() {
return width * height;
}
}
class Circle implements Shape {
private double radius;
// 생성자, getter, setter 생략
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
}
새로운 도형을 추가하더라도 기존 코드를 수정할 필요가 없습니다. 새 클래스를 만들고 인터페이스를 구현하기만 하면 됩니다.
리스코프 치환 원칙 (Liskov Substitution Principle)
java
Copy code
class Vehicle {
void startEngine() {
// 엔진 시동 로직
}
}
class Car extends Vehicle {
@Override
void startEngine() {
// 자동차 엔진 시동 로직
}
}
class ElectricCar extends Car {
@Override
void startEngine() {
// 전기차의 경우 배터리 연결 로직
}
}
상위 클래스인 Vehicle의 인스턴스 대신 하위 클래스인 Car 또는 ElectricCar의 인스턴스를 사용해도 정상적으로 작동합니다.
인터페이스 분리 원칙 (Interface Segregation Principle)
java
Copy code
interface VehicleOperation {
void startEngine();
void stopEngine();
}
interface FlightOperation {
void takeOff();
void land();
}
class Car implements VehicleOperation {
// 자동차 관련 메서드 구현
}
class Airplane implements VehicleOperation, FlightOperation {
// 비행기 관련 메서드 구현
}
VehicleOperation과 FlightOperation 인터페이스를 분리하여 각 클라이언트가 필요한 인터페이스만 구현하도록 합니다.
의존성 역전 원칙 (Dependency Inversion Principle)
java
Copy code
interface BookRepository {
Book findBookByTitle(String title);
}
class BookService {
private BookRepository bookRepository;
public BookService(BookRepository bookRepository) {
this.bookRepository = bookRepository;
}
public Book getBookByTitle(String title) {
return bookRepository.findBookByTitle(title);
}
}
BookService는 구체적인 BookRepository 구현 클래스에 의존하지 않고 인터페이스에만 의존합니다. 이를 통해 의존 관계가 역전되어 더 유연한 설계가 가능해집니다.
이상으로 JAVA에서 SOLID 원칙의 예시를 살펴보았습니다. 이러한 원칙들을 적용하면 유지보수성, 확장성, 유연성이 높은 코드를 작성할 수 있습니다.