>백엔드 개발 >Golang >함수가 인터페이스를 구현할 때 스키마 이름은 무엇입니까?

함수가 인터페이스를 구현할 때 스키마 이름은 무엇입니까?

王林
王林앞으로
2024-02-09 20:00:201282검색

함수가 인터페이스를 구현할 때 스키마 이름은 무엇입니까?

PHP 편집기 Youzi는 "함수가 인터페이스를 구현할 때 패턴의 이름은 무엇입니까?"라는 일반적인 질문에 답하기 위해 왔습니다. PHP에서는 함수가 인터페이스의 모든 메소드를 구현할 때 이 패턴을 알려진 패턴이라고 합니다. "인터페이스 구현 패턴" 또는 "인터페이스 어댑터 패턴"으로 사용됩니다. 인터페이스 구현 패턴은 프로그래머가 인터페이스를 구현하여 메서드 집합을 정의함으로써 코드 재사용 및 모듈화를 달성할 수 있도록 하는 일반적인 디자인 패턴입니다. 이 모델을 통해 우리는 인터페이스의 다형성을 달성하고 코드의 유연성과 유지 관리성을 향상시킬 수 있습니다. 객체지향 프로그래밍이든 함수형 프로그래밍이든 인터페이스 구현 패턴은 중요한 기술적 수단입니다.

질문 내용

go에서는 http.handler接口和具体类型http.handlerfunc과 같은 인터페이스를 구현하는 함수를 만들 수 있습니다. 저는 다양한 직원의 보너스를 계산하기 위해 이 패턴의 또 다른 간단한 예를 만들었습니다.

으아아아

위에서는 동일한 작업을 수행하기 위해 구조체를 사용하는 대신 간단한 bonusfuncs 实现接口 bonuscalculator을 사용했습니다.

이 패턴에 이름이 있나요? 여러 곳에서 본 것 같은데 이름은 못 찾았네요.

Solution

이 패턴에 이름이 있나요? 여러 곳에서 본 것 같은데 이름은 못 찾았네요.

예, 이 패턴을 Adapter라고 부르는 이유는 특정 "인터페이스"(이 경우 클로저)를 다른 인터페이스( bonuscalculator를 만족하는 유형)로 사용할 수 있기 때문입니다.

귀하의 예에는 인터페이스가 있습니다. bonuscalculator:

으아아아

그러나 func(salary float64) float64 유형의 클로저가 있고 bonusfunc를 만족하는 유형이 필요할 때 이를 전달할 수 있기를 원합니다. 즉, 메소드가 있습니다. calculate(salary float64) float64(클로저에는 그러한 이름을 가진 메소드가 없으므로 func(salary float64) float64 类型的闭包,并且您希望在需要满足 bonusfunc 的类型时能够传递它们,即具有方法 calculate(salary float64) float64 (闭包没有具有此类名称的方法,因此它们不满足 bonuscalculator를 만족하지 않습니다).

원하는 것은 func(salary float64) float64func(salary float64) float64 改编为 bonuscalculator。因此,您定义了一个新类型 bonusfunc,它是适配器。它将派生自您想要适应的闭包类型,然后通过定义一个方法 calculate(salary float64) float64 来满足 bonuscalculator에 적용하는 것입니다. 따라서 어댑터인 새로운 유형 bonusfunc를 정의합니다. 이는 적용하려는 클로저 유형에서 파생된 다음 기본 클로저를 간단히 호출하는 calculate(salary float64) float64 메서드를 정의하여

의 요구 사항을 충족합니다.

으아아아 bonusfunc适配器;它的存在只是为了适应 func(salary float64) float64 以便满足 bonuscalculator 接口。现在,每当您将 func(salary float64) float64 分配给 bonusfunc 时,您都会获得一个满足 bonuscalculatorbonusfunc어댑터입니다.

인터페이스를 만족시키기 위해 func(salary float64) float64에 적용하기 위해서만 존재합니다. 이제 bonusfuncfunc(salary float64) float64를 할당할 때마다 🎜 를 만족하는 값을 얻게 됩니다. 🎜

위 내용은 함수가 인터페이스를 구현할 때 스키마 이름은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제