Modèle de conception C brève introduction au modèle d'agent

黄舟
Libérer: 2017-01-18 15:01:09
original
1185 Les gens l'ont consulté

Mode proxy (Proxy) : Fournit un proxy pour d'autres objets pour contrôler l'accès à cet objet (le proxy, c'est-à-dire la personne).

Pour implémenter une méthode en C#, vous devez utiliser une interface pour définir les méthodes requises, tandis qu'en C, vous devez implémenter une classe en tant qu'interface, qui définit les méthodes requises. Pour moi, je n'ai pas besoin de participer aux activités spécifiques, mais l'agent le fera. Le client (tiers) ne me connaît pas non plus, agissant donc en tant qu'agent.

Ce qui précède signifie : utilisez une classe pour encapsuler les méthodes proxy requises.

Application en mode proxy :

Création à distance, c'est-à-dire fournir une représentation locale d'un objet dans différents espaces d'adressage. Cela masque le fait qu'un objet existe dans un espace d'adressage différent. 【DP】

Les agents virtuels sont des objets coûteux à créer selon les besoins. Il est utilisé pour stocker des objets réels qui nécessitent beaucoup de temps pour être instanciés. Par exemple : lors de l'ouverture d'une grande page Web HTML, l'image que nous voyons ne peut être vue qu'après le téléchargement, et la zone d'image non ouverte est accessible via un proxy virtuel. image réelle. À ce stade, l'agent stocke le chemin et les dimensions de l'image réelle.

Le proxy de sécurité est utilisé pour contrôler les autorisations lors de l'accès à des objets réels [DP]. Il est généralement utilisé lorsque les objets doivent avoir des autorisations d'accès différentes.

Le guidage intelligent signifie que lorsque l'objet réel est appelé, l'agent gère autre chose [DP].

Voici un exemple de forfait de téléphonie mobile d'agence :

Cas de test :

[code]int main(){//整个过程中,本人都没有出现
    std::string name = "Jarrett";
    //第三方公司
    Company cp(name);  //申请人(本人)的名字告诉公司

    //代理人
    Proxy *px = new Proxy(cp);

    //办理58元套餐
    px->A58();
    //办理88元套餐
    px->A88();
    //办理128元套餐
    px->A128();

    return 0;
}
Copier après la connexion

Méthode d'implémentation de la classe proxy :

[code]//主体,提供接口。无需实例化,定义为纯虚函数
class Subject{
public:
    virtual void A58()const = 0;
    virtual void A88()const = 0;
    virtual void A128()const = 0;
};

//第三方公司
class Company{   
public:
    std::string name; //公司要知道办理套餐本人的名字
    Company(std::string na):name(na){}  
};

//本人(被代理人)
class oneSelf: public Subject{
private:
    Company cp; //本人要知道自己对谁做什么,此处自己知道要对哪个公司办理套餐
public:
    oneSelf(Company c):cp(c){} //此处由代理类来初始化

    void A58()const override{
        std::cout << cp.name << " for 58 packages.\n"; //告诉移动公司,我要办58套餐
    }

    void A88()const override{
        std::cout << cp.name << " for 88 packages.\n";
    }

    void A128()const override{
        std::cout << cp.name << " for 128 packages.\n";
    }
};

class Proxy:public Subject{
private:
    //代理谁?
    oneSelf os;
public:
    Proxy(Company cp):os(oneSelf(cp)){}  //此处初始化本人的构造函数,达到了代理的目的
    void A58()const override{
        os.A58();
    }

    void A88()const override{
        os.A88();
    }

    void A128()const override{
        os.A128();
    }

};
Copier après la connexion

Ce qui précède is C Une brève introduction au modèle de conception et au contenu du modèle d'agence. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!