>백엔드 개발 >C++ >키 중심 액세스 보호 패턴을 더 쉽게 재사용할 수 있나요?

키 중심 액세스 보호 패턴을 더 쉽게 재사용할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-11-27 08:43:09777검색

Can Key-Oriented Access Protection Patterns Be Made More Reusable?

키 중심 접근 보호 패턴의 재사용성을 높일 수 있나요?

현재 형태로는 키를 활용한 접근 보호 패턴이 나타납니다. 재사용성에 한계가 있습니다. 이 문제를 해결하기 위해 다양한 개선 사항이 제안되었습니다.

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&amp;) = delete;
    passkey&amp; operator=(const passkey&amp;) = delete;
};

#define PASSKEY_FUNCTION(pTag, pFunc, ...)               \
        struct EXPAND(pTag);                             \
                                                         \
        template <>                                      \
        class passkey<EXPAND(pTag)>                      \
        {                                                \
        private:                                         \
            friend pFunc __VA_ARGS__;                    \
            passkey() {}                                 \
                                                         \
            passkey(const passkey&amp;) = delete;            \
            passkey&amp; operator=(const passkey&amp;) = delete; \
        }

이제 각 클래스에는 고유한 암호 키가 있으며 함수에서는 허용되는 암호 키를 지정할 수 있습니다. 호출자는 필요한 암호 키를 생성하고 원하는 메서드를 호출하기만 하면 됩니다. 이 접근 방식은 일반적인 구현을 통해 향상된 재사용성과 유연성을 제공합니다.

위 내용은 키 중심 액세스 보호 패턴을 더 쉽게 재사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.