일본 도쿄에 살면서 따뜻한 커피부터 차가운 음료, 스낵까지 모든 것을 판매하는 자판기에 둘러싸여 있습니다. 이러한 상징적인 자판기에서 영감을 받아 Go로 자판기 시스템 디자인을 구축했습니다. 이것은 State 패턴을 사용하는 멋진 예이며, 이것이 이런 종류의 프로젝트에 왜 매우 유용한지 분석해 보겠습니다.
실제 자동판매기를 생각해 보세요. 실제로는 꽤 복잡합니다! 다음이 필요합니다.
또한 현재 상태를 혼동하지 않고 이 모든 작업을 수행해야 합니다.
먼저 작업할 몇 가지 기본 구조가 필요했습니다.
제품 및 재고
각 상품에는 ID, 이름, 가격, 수량 등이 있습니다. 매우 간단한 내용:
type Product struct { ID int Name string Price float64 Quantity int }
인벤토리는 지도를 사용하여 모든 제품을 추적합니다. 다음을 수행할 수 있습니다.
상태 패턴: 여기가 멋진 이유
여기서 흥미로운 점이 있습니다. 자동판매기는 다양한 상태에 있을 수 있습니다.
각 상태는 사용자 작업을 다르게 처리해야 합니다. 예를 들어 돈을 넣기 전에는 제품을 선택할 수 없잖아요?
저는 세 가지 주요 상태를 사용했습니다:
각 주에서는 다음 인터페이스를 구현합니다.
type State interface { InsertMoney(amount float64) SelectProduct(product *Product) ReturnChange() DispenseProduct() }
모든 것이 함께 작동하는 방식
콜라를 사고 싶다고 가정해 보겠습니다.
먼저 $2.00를 입력합니다
콜라 선택($1.50)
기계가 콜라를 분배합니다
이것을 구축하면서 다음과 같은 몇 가지 사실을 배웠습니다.
항상 개선의 여지가 있습니다! 몇 가지 아이디어:
전체 코드는 여기에 표시된 것보다 더 자세하지만 이것이 작동하도록 하는 주요 부분입니다. 다음 저장소에서 전체 구현을 자유롭게 확인하세요.
Go의 하위 수준 시스템 설계 저장소에 오신 것을 환영합니다! 이 저장소에는 다양한 하위 수준 시스템 설계 문제와 Go로 구현된 솔루션이 포함되어 있습니다. 주요 목표는 실제 사례를 통해 시스템의 설계와 아키텍처를 보여주는 것입니다.
낮은 수준의 시스템 설계에는 시스템 아키텍처의 핵심 개념을 이해하고 확장 가능하고 유지 관리가 가능하며 효율적인 시스템을 설계하는 작업이 포함됩니다. 이 저장소에서는 Go를 사용하여 다양한 문제와 시나리오에 대한 솔루션을 다루려고 합니다.
이 저장소의 첫 번째 프로젝트는 주차장 시스템입니다. 이 시스템은 차량을 주차하거나 주차 해제할 수 있는 주차장을 시뮬레이션합니다. 다음을 보여줍니다.
위 내용은 시스템 설계: Go로 자판기 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!