1. Factory pattern
est une classe qui possède certaines méthodes qui créent des objets pour vous. Vous pouvez utiliser une classe d'usine pour créer des objets sans utiliser directement new. De cette façon, si vous souhaitez changer le type d’objet créé, il vous suffit de changer d’usine. Tout le code utilisant cette usine est automatiquement modifié.
Le code suivant est un exemple de classe d'usine. Le côté serveur de l'équation se compose de deux parties : une base de données et un ensemble de pages PHP qui vous permettent d'ajouter des commentaires, de demander une liste de commentaires et d'obtenir des articles liés à un retour spécifique.
L'interface IUser définit les opérations que l'objet utilisateur doit effectuer :
interface IUser { function getName(); }
L'implémentation de IUser est appelée User :
class User implements IUser { public function __construct( $id ) { } public function getName() { return "Jack"; } }
La classe d'usine UserFactory crée l'objet IUser :
class UserFactory { public static function Create( $id ) { return new User( $id ); } }
Le code de test demandera l'objet User
à l'usine et la sortie getName
Résultat de la méthode :
$pr = UserFactory::Create( 1 );echo( $pr->getName()."\n" );
Il existe une variante du modèle d'usine qui utilise des méthodes d'usine. Ces méthodes statiques publiques d’une classe construisent des objets de ce type. Cette méthode est utile s'il est important de créer des objets de ce type. Par exemple, supposons que vous deviez créer un objet, puis définir un certain nombre de propriétés. Cette version du modèle d'usine encapsule le processus dans un seul emplacement, vous n'avez donc pas besoin de copier un code d'initialisation complexe et de le coller partout dans la base de code.
interface IUser //接口{ function getName(); } class User implements IUser { public static function Load( $id ) //静态函数 { return new User( $id ); } public static function Create( ) //静态函数 { return new User( null ); } public function __construct( $id ) { }//构造函数 public function getName() { return "Jack"; } } $uo = User::Load( 1 );echo( $uo->getName()."\n" );
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!