Le mode usine est le mode objet d'instanciation le plus couramment utilisé. C'est un mode qui utilise des méthodes d'usine pour remplacer de nouvelles opérations. Le modèle de fabrique a une construction clé, qui est une méthode statique nommée Factory selon des principes généraux. Cependant, ce n'est qu'un principe. Bien que la méthode de fabrique puisse être nommée arbitrairement, cette méthode statique peut également accepter les paramètres de n'importe quelle donnée et doit retourner. un objet.
Le mode Factory est notre mode objet d'instanciation le plus couramment utilisé. C'est un mode qui utilise des méthodes d'usine pour remplacer de nouvelles opérations. Il est largement utilisé dans le célèbre Jive. forum Le modèle d'usine peut être vu partout dans le système de programme Java.
Étant donné que le modèle d'usine est équivalent à new pour créer des objets d'instance, nous générons souvent des objets d'instance basés sur la classe Class, comme A a=new A() Le modèle d'usine est également utilisé pour créer des objets d'instance, donc à l'avenir, lorsque vous serez nouveau, vous devez être prudent et déterminer si vous pouvez envisager d'utiliser le mode usine. Bien que cela puisse nécessiter plus de travail, cela apportera une plus grande évolutivité à votre système et nécessitera le moins de modifications possible.
Qu'est-ce que le modèle d'usine ? Définition du modèle d'usine
Prenons la classe Sample comme exemple. Si nous voulons créer un objet instance de Sample :
Sample sample=new Sample();
Cependant, la situation réelle est que nous devons généralement créer. un exemple d'instance. Effectuez un travail d'initialisation, comme attribuer des valeurs pour interroger la base de données, etc.
Tout d'abord, ce à quoi nous pensons, c'est que nous pouvons utiliser le constructeur de Sample, pour que l'instance générée s'écrive comme :
Sample sample=new Sample(参数);
Cependant, si le travail d'initialisation effectué lors de la création du L'exemple d'instance n'est pas aussi simple qu'une affectation. Il peut s'agir d'un long morceau de code s'il est également écrit dans le constructeur, votre code sera moche (une refactorisation sera nécessaire).
Pourquoi le code est-il moche ? Les débutants peuvent ne pas ressentir cela. Notre analyse est la suivante. Si le travail d'initialisation est un long morceau de code, cela signifie qu'il y a beaucoup de travail à faire. beaucoup de travail dans une seule méthode est assez dangereux. Il est très dangereux de mettre plusieurs œufs dans le même panier. Cela est également contraire aux principes orientés objet de Java (Encapsulation) et de répartition (Délégation) qui nous disent de "couper" la longueur. affectations de code autant que possible dans chaque segment, puis "encapsuler" chaque segment (pour réduire le couplage et la connexion entre les segments). segment, et il n’y aura plus d’incidents inquiétants.
Dans cet exemple, tout d'abord, nous devons séparer le travail de création d'une instance du travail d'utilisation de l'instance, c'est-à-dire séparer la grande quantité de travail d'initialisation requis pour créer l'instance du constructeur de l'échantillon.
À l'heure actuelle, nous avons besoin du modèle Factory pour générer des objets, et nous ne pouvons plus utiliser le simple nouveau Sample (paramètre) ci-dessus. De plus, si Sample a un héritage tel que MySample, selon la programmation orientée interface, nous devons abstraire Sample dans une interface. Sample est une interface et possède deux sous-classes, MySample et HisSample. Lorsque nous voulons les instancier, c'est comme. suit :
ISample mysample=new MySample(); ISample hissample=new HisSample();
Au fur et à mesure de l'avancement du projet, Sample peut " donner naissance à plusieurs fils ", nous devons donc instancier ces fils un par un. Pire encore, nous devrons peut-être modifier le code précédent : ajouter des fils plus tard. . Exemple. Ceci est inévitable dans les programmes traditionnels.
Mais si vous utilisez consciemment le modèle d'usine dès le début, ces problèmes disparaîtront.
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!