From ddc3f84a5d8b1edcac08e0d5c4e78eb990f1f42d Mon Sep 17 00:00:00 2001 From: banjjoknim Date: Wed, 9 Nov 2022 14:45:35 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20SOLID=20-=20LSP=20=EC=83=98=ED=94=8C?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solid-design-pattern-sample/README.md | 9 +++++++ .../solid/lsp/after/CarVehicleServiceAfter.kt | 24 +++++++++++++++++++ .../solid/lsp/after/PlaneVehicleServiceAfter.kt | 24 +++++++++++++++++++ .../solid/lsp/after/VehicleControllerAfter.kt | 20 ++++++++++++++++ .../solid/lsp/after/VehicleServiceAfter.kt | 11 +++++++++ .../solid/lsp/after/VehicleServiceFactoryAfter.kt | 14 +++++++++++ .../solid/lsp/before/CarVehicleServiceBefore.kt | 23 ++++++++++++++++++ .../solid/lsp/before/PlaneVehicleServiceBefore.kt | 23 ++++++++++++++++++ .../solid/lsp/before/VehicleControllerBefore.kt | 20 ++++++++++++++++ .../solid/lsp/before/VehicleServiceBefore.kt | 19 +++++++++++++++ .../solid/lsp/before/VehicleServiceFactoryBefore.kt | 14 +++++++++++ .../solid/lsp/common/Vehicle.kt | 12 ++++++++++ .../solid/lsp/common/VehicleMoveRequest.kt | 8 +++++++ .../solid/lsp/common/VehicleRepository.kt | 5 ++++ .../solid/lsp/common/VehicleRepositoryStub.kt | 10 ++++++++ .../solid/lsp/common/VehicleType.kt | 6 +++++ 16 files changed, 242 insertions(+) create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/CarVehicleServiceAfter.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/PlaneVehicleServiceAfter.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleControllerAfter.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleServiceAfter.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleServiceFactoryAfter.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/CarVehicleServiceBefore.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/PlaneVehicleServiceBefore.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleControllerBefore.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleServiceBefore.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleServiceFactoryBefore.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/Vehicle.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleMoveRequest.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleRepository.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleRepositoryStub.kt create mode 100644 놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleType.kt diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/README.md b/놀이터(예제 코드 작성)/solid-design-pattern-sample/README.md index 77ec999..08e3c6a 100644 --- a/놀이터(예제 코드 작성)/solid-design-pattern-sample/README.md +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/README.md @@ -28,6 +28,15 @@ - 쿠폰 결제방식을 추가한다고 가정한다. - 쿠폰으로 결제할 경우 잔고가 차감되지 않는다. +### LSP(Liskov Substitution Principle) + +- 리스코프 치환 원칙 +- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. + +#### 구현 요구사항 + +- 좌표를 입력하면 해당 좌표로 이동수단의 위치가 변한다. + ## 참고자료 - [SOLID (객체 지향 설계)](https://ko.wikipedia.org/wiki/SOLID_(%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%EC%84%A4%EA%B3%84)) diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/CarVehicleServiceAfter.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/CarVehicleServiceAfter.kt new file mode 100644 index 0000000..6ddb4df --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/CarVehicleServiceAfter.kt @@ -0,0 +1,24 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.after + +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.Vehicle +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleMoveRequest +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleRepository +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleType +import org.springframework.stereotype.Service + +@Service +class CarVehicleServiceAfter( + private val vehicleRepository: VehicleRepository +): VehicleServiceAfter() { + override fun move(request: VehicleMoveRequest): Vehicle { + println("자동차가 이동합니다.") + val vehicle = vehicleRepository.getVehicle(request.vehicleId) + vehicle.positionX = request.positionX + vehicle.positionY = request.positionY + return vehicle + } + + override fun vehicleType(): VehicleType { + return VehicleType.CAR + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/PlaneVehicleServiceAfter.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/PlaneVehicleServiceAfter.kt new file mode 100644 index 0000000..7e698fd --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/PlaneVehicleServiceAfter.kt @@ -0,0 +1,24 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.after + +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.Vehicle +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleMoveRequest +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleRepository +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleType +import org.springframework.stereotype.Service + +@Service +class PlaneVehicleServiceAfter( + private val vehicleRepository: VehicleRepository +): VehicleServiceAfter() { + override fun move(request: VehicleMoveRequest): Vehicle { + println("비행기가 이동합니다.") + val vehicle = vehicleRepository.getVehicle(request.vehicleId) + vehicle.positionX = request.positionX + vehicle.positionY = request.positionY + return vehicle + } + + override fun vehicleType(): VehicleType { + return VehicleType.PLANE + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleControllerAfter.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleControllerAfter.kt new file mode 100644 index 0000000..e98146b --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleControllerAfter.kt @@ -0,0 +1,20 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.after + +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.Vehicle +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleMoveRequest +import org.springframework.web.bind.annotation.PatchMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController + +@RequestMapping("/vehicles") +@RestController +class VehicleControllerAfter( + private val vehicleServiceFactoryAfter: VehicleServiceFactoryAfter +) { + @PatchMapping("/with-lsp") + fun move(@RequestBody request: VehicleMoveRequest): Vehicle { + val vehicleServiceAfter = vehicleServiceFactoryAfter.getVehicleServiceAfter(request.vehicleType) + return vehicleServiceAfter.move(request) + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleServiceAfter.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleServiceAfter.kt new file mode 100644 index 0000000..e3c4884 --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleServiceAfter.kt @@ -0,0 +1,11 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.after + +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.Vehicle +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleMoveRequest +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleType + +abstract class VehicleServiceAfter { + abstract fun move(request: VehicleMoveRequest): Vehicle + + abstract fun vehicleType(): VehicleType +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleServiceFactoryAfter.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleServiceFactoryAfter.kt new file mode 100644 index 0000000..4c0f3fb --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/after/VehicleServiceFactoryAfter.kt @@ -0,0 +1,14 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.after + +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleType +import org.springframework.stereotype.Component + +@Component +class VehicleServiceFactoryAfter( + val vehicleServiceAfters: List +) { + fun getVehicleServiceAfter(vehicleType: VehicleType): VehicleServiceAfter { + return vehicleServiceAfters.find { it.vehicleType() == vehicleType } + ?: throw NoSuchElementException("해당 이동수단에 대한 구현이 존재하지 않습니다.") + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/CarVehicleServiceBefore.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/CarVehicleServiceBefore.kt new file mode 100644 index 0000000..1711e64 --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/CarVehicleServiceBefore.kt @@ -0,0 +1,23 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.before + +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.Vehicle +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleMoveRequest +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleRepository +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleType +import org.springframework.stereotype.Service + +@Service +class CarVehicleServiceBefore( + private val vehicleRepository: VehicleRepository +) : VehicleServiceBefore(vehicleRepository) { + override fun move(request: VehicleMoveRequest): Vehicle { + val vehicle = vehicleRepository.getVehicle(request.vehicleId) + vehicle.positionX += request.positionX // 하위 타입에서의 잘못된 오버라이딩! + vehicle.positionY += request.positionY // 하위 타입에서의 잘못된 오버라이딩! + return vehicle + } + + override fun vehicleType(): VehicleType { + return VehicleType.CAR + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/PlaneVehicleServiceBefore.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/PlaneVehicleServiceBefore.kt new file mode 100644 index 0000000..bcdf024 --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/PlaneVehicleServiceBefore.kt @@ -0,0 +1,23 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.before + +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.Vehicle +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleMoveRequest +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleRepository +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleType +import org.springframework.stereotype.Service + +@Service +class PlaneVehicleServiceBefore( + private val vehicleRepository: VehicleRepository +) : VehicleServiceBefore(vehicleRepository) { + override fun move(request: VehicleMoveRequest): Vehicle { + val vehicle = vehicleRepository.getVehicle(request.vehicleId) + vehicle.positionX -= request.positionX // 하위 타입에서의 잘못된 오버라이딩! + vehicle.positionY -= request.positionY // 하위 타입에서의 잘못된 오버라이딩! + return vehicle + } + + override fun vehicleType(): VehicleType { + return VehicleType.PLANE + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleControllerBefore.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleControllerBefore.kt new file mode 100644 index 0000000..61edd7b --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleControllerBefore.kt @@ -0,0 +1,20 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.before + +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.Vehicle +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleMoveRequest +import org.springframework.web.bind.annotation.PatchMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController + +@RequestMapping("/vehicles") +@RestController +class VehicleControllerBefore( + private val vehicleServiceFactoryBefore: VehicleServiceFactoryBefore +) { + @PatchMapping("/none-lsp") + fun move(@RequestBody request: VehicleMoveRequest): Vehicle { + val vehicleServiceBefore = vehicleServiceFactoryBefore.getVehicleServiceBefore(request.vehicleType) + return vehicleServiceBefore.move(request) + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleServiceBefore.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleServiceBefore.kt new file mode 100644 index 0000000..8f9996c --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleServiceBefore.kt @@ -0,0 +1,19 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.before + +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.Vehicle +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleMoveRequest +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleRepository +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleType + +abstract class VehicleServiceBefore( + private val vehicleRepository: VehicleRepository +) { + open fun move(request: VehicleMoveRequest): Vehicle { + val vehicle = vehicleRepository.getVehicle(request.vehicleId) + vehicle.positionX = request.positionX + vehicle.positionY = request.positionY + return vehicle + } + + abstract fun vehicleType(): VehicleType +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleServiceFactoryBefore.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleServiceFactoryBefore.kt new file mode 100644 index 0000000..eaf8bde --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/before/VehicleServiceFactoryBefore.kt @@ -0,0 +1,14 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.before + +import com.banjjoknim.soliddesignpatternsample.solid.lsp.common.VehicleType +import org.springframework.stereotype.Component + +@Component +class VehicleServiceFactoryBefore( + val vehicleServiceBefores: List +) { + fun getVehicleServiceBefore(vehicleType: VehicleType): VehicleServiceBefore { + return vehicleServiceBefores.find { it.vehicleType() == vehicleType } + ?: throw NoSuchElementException("해당 이동수단에 대한 구현이 존재하지 않습니다.") + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/Vehicle.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/Vehicle.kt new file mode 100644 index 0000000..4690a09 --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/Vehicle.kt @@ -0,0 +1,12 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.common + +import javax.persistence.Entity +import javax.persistence.Id + +@Entity +class Vehicle( + var positionX: Int = 0, + var positionY: Int = 0, + @Id + val id: Long = 0L +) diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleMoveRequest.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleMoveRequest.kt new file mode 100644 index 0000000..227035d --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleMoveRequest.kt @@ -0,0 +1,8 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.common + +data class VehicleMoveRequest( + val vehicleId: Long, + val positionX: Int, + val positionY: Int, + val vehicleType: VehicleType +) diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleRepository.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleRepository.kt new file mode 100644 index 0000000..19a822d --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleRepository.kt @@ -0,0 +1,5 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.common + +interface VehicleRepository { + fun getVehicle(vehicleId: Long): Vehicle +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleRepositoryStub.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleRepositoryStub.kt new file mode 100644 index 0000000..63ae256 --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleRepositoryStub.kt @@ -0,0 +1,10 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.common + +import org.springframework.stereotype.Repository + +@Repository +class VehicleRepositoryStub : VehicleRepository { + override fun getVehicle(vehicleId: Long): Vehicle { + return Vehicle(id = vehicleId) + } +} diff --git a/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleType.kt b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleType.kt new file mode 100644 index 0000000..b8e2bb0 --- /dev/null +++ b/놀이터(예제 코드 작성)/solid-design-pattern-sample/src/main/kotlin/com/banjjoknim/soliddesignpatternsample/solid/lsp/common/VehicleType.kt @@ -0,0 +1,6 @@ +package com.banjjoknim.soliddesignpatternsample.solid.lsp.common + +enum class VehicleType { + CAR, + PLANE +}