키 중심 접근 보호 패턴의 재사용성을 높일 수 있나요?
현재 형태로는 키를 활용한 접근 보호 패턴이 나타납니다. 재사용성에 한계가 있습니다. 이 문제를 해결하기 위해 다양한 개선 사항이 제안되었습니다.
C 03 개선 사항:
매크로를 사용하면 패턴을 단순화하고 일반화할 수 있습니다. PASSKEY 매크로는 특정 클래스나 기능에 대한 암호키를 정의하여 액세스 제어 관리를 위한 중앙 위치를 제공합니다. 예는 다음과 같습니다.
#define PASSKEY_1(pKeyname, pFriend1) \ class EXPAND(pKeyname) \ { \ private: \ friend EXPAND(pFriend1); \ EXPAND(pKeyname)() {} \ \ EXPAND(pKeyname)(const EXPAND(pKeyname)&); \ EXPAND(pKeyname)& operator=(const EXPAND(pKeyname)&); \ }
이 방법은 패턴의 사용 편의성을 향상시키지만 단점도 있습니다. 호출자는 필요한 특정 암호 키를 알아야 하며 매크로가 복잡해질 수 있습니다.
C 0x 향상:
C 0x에서는 패턴이 가장 큰 잠재력을 발휘할 수 있습니다. 가변 템플릿과 템플릿 매개변수 친구들에게. 구현은 다음과 같습니다.
template <typename T> class passkey { private: friend T; // Now possible in C++0x passkey() {} // Noncopyable passkey(const passkey&) = delete; passkey& operator=(const passkey&) = delete; }; #define PASSKEY_FUNCTION(pTag, pFunc, ...) \ struct EXPAND(pTag); \ \ template <> \ class passkey<EXPAND(pTag)> \ { \ private: \ friend pFunc __VA_ARGS__; \ passkey() {} \ \ passkey(const passkey&) = delete; \ passkey& operator=(const passkey&) = delete; \ }
이제 각 클래스에는 고유한 암호 키가 있으며 함수에서는 허용되는 암호 키를 지정할 수 있습니다. 호출자는 필요한 암호 키를 생성하고 원하는 메서드를 호출하기만 하면 됩니다. 이 접근 방식은 일반적인 구현을 통해 향상된 재사용성과 유연성을 제공합니다.
위 내용은 키 중심 액세스 보호 패턴을 더 쉽게 재사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!