SOLID는 컴퓨터 프로그래밍의 다섯 가지 좋은 원칙(규칙) 그룹의 약어입니다. SOLID를 사용하면 프로그래머는 나중에 더 쉽게 이해하고 변경할 수 있는 코드를 작성할 수 있습니다. SOLID는 객체 지향 설계를 사용하는 시스템에서 자주 사용됩니다.
차량을 예로 들어 SOLID 원리를 설명하겠습니다. 운송 서비스를 위해 자동차, 전기 자동차 등 다양한 유형의 차량을 관리하는 시스템을 설계한다고 상상해 보세요.
차량 예: 자동차가 있다고 상상해 보세요. 운전을 담당하지만 자체 유지 관리(예: 오일 교환이나 타이어 교체)를 처리할 책임은 있어서는 안 됩니다. 대신 별도의 정비사가 이를 담당합니다.
설명: 우리 코드에서 Vehicle 클래스는 제조사 및 모델 저장과 같이 차량 자체와 관련된 작업만 처리해야 합니다. 유지 관리를 관리해야 하는 경우 이를 위해 별도의 유지 관리 클래스를 만듭니다. 이렇게 하면 각 클래스에 하나의 작업이나 책임이 있어 코드를 더 쉽게 관리할 수 있습니다.
class Vehicle def initialize(make, model) @make = make @model = model end end class Maintenance def initialize(vehicle) @vehicle = vehicle end def perform_maintenance puts "Performing maintenance on #{@vehicle.make} #{@vehicle.model}" end end
차량 예: 기본 자동차가 있고 이제 시스템에 전기 자동차를 추가하려고 한다고 가정합니다. 전기차용 기능을 추가하기 위해 기존 자동차 클래스를 수정할 필요는 없습니다. 대신, 전기 자동차에 대한 새로운 클래스를 생성하여 기존 기능을 확장할 수 있습니다.
설명: Vehicle 클래스는 확장을 위해 열려 있지만(ElectricVehicle과 같은 새로운 유형의 차량을 생성할 수 있음) 수정을 위해 닫혀 있습니다(새 유형을 추가하기 위해 Vehicle 클래스 자체를 변경할 필요는 없습니다).
class Vehicle def initialize(make, model) @make = make @model = model end def description "#{@make} #{@model}" end end class ElectricVehicleL - 리스코프 대체 원리(LSP)
차량 예: 다수의 차량이 있고 일반 자동차를 문제 없이 전기 자동차로 교체할 수 있다고 상상해 보세요. 둘 다 시스템을 손상시키지 않고 기본 기능인 '운전'을 수행할 수 있어야 합니다.
설명: 모든 하위 클래스(예: ElectricVehicle)는 프로그램의 동작을 변경하지 않고 상위 클래스(Vehicle)를 대체할 수 있어야 합니다. 이를 통해 우리 코드는 동일한 방식으로 다양한 유형의 차량을 처리할 수 있습니다.class Vehicle def initialize(make, model) @make = make @model = model end def drive puts "Driving the #{@make} #{@model}" end end class ElectricVehicleI - 인터페이스 분리 원리(ISP)
차량 예: 다양한 유형의 차량이 있다고 상상해 보세요. 일부는 충전할 수 있고(예: 전기 자동차), 일부는 주행만 가능합니다(예: 휘발유 자동차). 휘발유 자동차가 충전 관련 방법을 처리하는 것을 원하지 않습니다.
설명: 클래스는 필요한 인터페이스(또는 동작)만 구현해야 합니다. 예를 들어 ElectricVehicle은 Drivable 및 Chargeable 인터페이스를 모두 구현할 수 있지만 일반 차량은 Drivable만 구현할 수 있습니다.module Drivable def drive raise NotImplementedError, "This #{self.class} cannot drive" end end module Chargeable def charge raise NotImplementedError, "This #{self.class} cannot be charged" end end class Vehicle include Drivable def initialize(make, model) @make = make @model = model end def drive puts "Driving the #{@make} #{@model}" end end class ElectricVehicleD - 종속성 역전 원리(DIP)
차량 예: 자동차에 가스 엔진이나 전기 엔진 등 다양한 유형의 엔진이 있을 수 있다고 상상해 보세요. 자동차는 특정 엔진 유형에 직접적으로 의존하는 대신, 모든 유형의 엔진을 사용할 수 있도록 보다 일반적인 엔진 인터페이스에 의존해야 합니다.
설명: 높은 수준의 모듈(차량 등)은 낮은 수준의 모듈(GasEngine 또는 ElectricEngine 등)에 의존해서는 안 됩니다. 둘 다 추상화(예: 엔진 인터페이스)에 의존해야 합니다. 이를 통해 시스템이 더욱 유연해지고 변경이 쉬워집니다.class Engine def start raise NotImplementedError, "This #{self.class} cannot start" end end class GasEngine이 차량 사례의 SOLID 원칙을 따르면 유지 관리, 확장 및 새로운 요구 사항에 적응하기 쉬운 시스템을 구축할 수 있습니다.
링크드인: https://www.linkedin.com/in/anandsoni11/
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3