Avantages de l'idiome "PIMPL"
Dans l'idiome "Pointer to Implementation" (PIMPL), une classe publique encapsule une structure interne ou classe (la « implémentation »), fournissant une implémentation cachée aux utilisateurs externes. Cette technique offre plusieurs avantages :
Considérations de conception pour la "classe Pimpl"
Pendant que PIMPL isole l'implémentation, placer des méthodes publiques sur la classe PIMPL au lieu de la classe publique peut sembler contre-intuitif. Cependant, cette approche garantit que :
Exemple d'implémentation avec implémentation isolée
Considérez l'exemple de code ci-dessous, où le "Purr( )" est contenue dans la classe PIMPL :
// header file: class Cat { private: class CatImpl; // PIMPL class CatImpl* cat_; // Pointer to PIMPL public: Cat(); // Constructor ~Cat(); // Destructor Purr(); // Public method }; // CPP file: #include "cat.h" class Cat::CatImpl { public: Purr(); }; Cat::Cat() { cat_ = new CatImpl; } Cat::~Cat() { delete cat_; } void Cat::Purr() { cat_->Purr(); } void CatImpl::Purr() { // Actual implementation of "Purr()" }
Dans cet exemple, la classe publique "Cat" gère la création et destruction de l'objet "CatImpl" mais délègue l'implémentation de "Purr()" à la classe PIMPL. Cette approche garantit que les détails de l'implémentation "Purr()" sont cachés aux utilisateurs externes tout en fournissant une interface stable pour interagir avec la classe "Cat".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!