문제 개요:
목표: 재사용 가능한 기본 구조체 생성 다른 구조체에 의해 확장될 수 있는 메서드. 그러나 Go의 구조는 상위 구조체의 메서드에 대한 액세스를 제한하므로 기존 상속이 불가능합니다.
원래 패턴:
사용자가 상속과 유사한 동작을 포함하는 복잡한 패턴을 제안합니다. :
Go의 접근 방식: 구성 끝 상속
Go는 유연성과 유지 관리성을 위해 상속보다 구성을 권장합니다. 하위 클래스화 대신 Go에서는 확장성을 달성하기 위해 인터페이스 사용과 구조체 삽입을 장려합니다.
임베딩:
임베딩을 사용하면 구조체가 다른 구조체의 필드와 메서드를 직접 포함하여 효과적으로 재사용할 수 있습니다. 그 기능. 예를 들어, Reader 및 Writer 인터페이스가 있는 경우 결합된 ReadWriter 인터페이스를 생성하고 Reader 및 Writer 구현을 포함할 수 있습니다.
이제 MyReadWriter 구조체는 MyReader와 Writer의 모든 메서드에 액세스하고 사용할 수 있습니다. 그리고 MyWriter는 ReadWriter 인터페이스를 원활하게 구현합니다.
종속성 주입:
임베딩은 또한 종속성 주입을 용이하게 하여 더 나은 테스트와 분리를 가능하게 합니다. MyReader 및 MyWriter를 MyReadWriter 구조체에 삽입하여 종속성을 명시적으로 전달하여 테스트 가능성을 향상시킬 수 있습니다.
사용 예:
여기서 예를 들어, rw 구조체는 판독기와 기록기 역할을 모두 수행할 수 있으므로 다양한 시나리오에서 다양하게 사용할 수 있습니다.
위 내용은 전통적인 상속을 사용하지 않고 Go에서 상속과 같은 확장성을 어떻게 달성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!