Le modèle d'usine du modèle de conception en Java, le principe sous - jacent du mécanisme de réflexion Java

Harmonios Learning 2021-11-25 19:06:51
le mod le usine du

 Un.、Mode usine simple

 1、Généralités

 2、Réalisation

 2.、Mode de méthode de l'usine

 1、Généralités

 2、Réalisation

 Trois、Modèle d'usine abstrait

 1、Généralités

 2、Réalisation

 Trois、Résumé

 1、 Avantages du mode usine

 2、 Le mode usine s'applique au scénario

 3、 La différence entre les trois modèles


Un.、Mode usine simple

============

1、Généralités


Le mode usine simple est aussi appelé le mode usine statique , Toutes les tâches de création d'objets ont été confiées à une classe d'usine pour implémenter ,Pour utiliser un objet, Trouvez la classe d'usine directement .

Prenons l'exemple de la classe d'usine animale , Vous pouvez mettre en œuvre la création d'objets animaux entièrement dans la classe Animal Factory , Définition des méthodes statiques dans les classes d'usines animales , Créer différents objets animaux en fonction des différentes classes de paramètres passées .

Analyse des facteurs :

  1. Définir une classe abstraite: Les animaux ont des attributs communs :Mange., Vous pouvez donc créer une classe d'abstraction animale ,Définition“Mange.”L'approche abstraite de

  2. Définir des classes d'opérations spécifiques : Les animaux ont beaucoup de , Prenons par exemple les chats et les chiens , Créer des chats et des chiens ,Hériter des animaux,Réalisation“Mange.”L'approche abstraite de

  3. Définir une usine simple : Créer différents objets animaux en fonction des différentes classes de paramètres passées

  4. Catégorie d'essai: Appeler la classe Factory pour créer un objet

2、Réalisation


【1】Définir une classe abstraite

public abstract class Animal {

public abstract void eat();

}

【2】 Définir des classes d'opérations spécifiques

public class Cat extends Animal{

public void eat() {

System.out.println(“Les chats mangent du poisson”);

}

}

public class Dog extends Animal {

public void eat() {

System.out.println(“Les chiens mangent de la viande.”);

}

}

【3】 Définir une usine simple

public class Factory {

public static Animal creatAnimal(String name){

if(“cat”.equals(name)){

return new Cat();

}else if (“dog”.equals(name)){

return new Dog();

}

return null;

}

}

【4】Catégorie d'essai

public static void main(String[] args){

Animal cat = Factory.creatAnimal(“cat”);

Animal dog = Factory.creatAnimal(“dog”);

cat.eat();

dog.eat();

}

2.、Mode de méthode de l'usine

========

1、Généralités


En mode usine simple , Est d'appeler les méthodes de l'usine pour créer des objets en fonction des paramètres nécessaires pour passer la réponse , Mais les développeurs ne savent pas quels paramètres peuvent passer , Il en résulte que vous ne pouvez pas retourner à l'objet que vous voulez , Et le modèle de méthode d'usine laisse chaque objet à son usine pour créer , Pour éviter ce genre d'abus .

Analyse des facteurs :

  • Interface usine: L'interface Factory est au cœur du modèle de la méthode Factory , Interagir directement avec l'appelant pour fournir le produit ,Dans la programmation réelle, Parfois, une classe abstraite est utilisée comme interface pour interagir avec l'appelant ,C'est la même chose..

  • Réalisation en usine: L'implémentation de l'usine détermine comment instancier le produit , C'est le moyen de se développer , Le nombre de produits requis est fonction du nombre d'implémentations spécifiques de l'usine

  • Interface produit : L'objectif principal de l'interface produit est de définir les spécifications du produit , Toutes les implémentations de produits doivent être conformes aux spécifications définies par l'interface produit .Produits L'interface est la principale préoccupation de l'appelant , Les avantages et les inconvénients de la définition de l'interface produit déterminent directement la stabilité du Code de l'appelant .Encore une fois, Les interfaces produits peuvent également être remplacées par des classes abstraites , Mais attention à ne pas enfreindre le principe de remplacement de Richter. .

  • Réalisation du produit : Classes spécifiques pour implémenter l'interface produit , Détermine le comportement spécifique du produit dans le client .

2、Réalisation


【1】Interface usine

public interface Factory {

public abstract Animal createAnimal();

}

【2】Classe de mise en œuvre de l'usine

public class catFactory implements Factory{

public Animal createAnimal() {

return new Cat();

}

}

public class dogFactory implements Factory {

public Animal createAnimal() {

return new Dog();

}

}

【3】 Interface produit

public abstract class Animal {

public abstract void eat();

}

【4】 Mise en œuvre de la catégorie de produits

public class Cat extends Animal {

public void eat() {

System.out.println(“Les chats mangent du poisson”);

}

}

public class Dog extends Animal {

public void eat() {

System.out.println(“Les chiens mangent de la viande.”);

}

}

【5】Catégorie d'essai

public class Test {

public static void main(String[] args){

Factory catfactory = new catFactory();

Animal cat = catfactory.createAnimal();

Factory dogfactory = new dogFactory();

Animal dog = dogfactory.createAnimal();

cat.eat();

dog.eat();

}

}

Trois、Modèle d'usine abstrait

========

1、Généralités


Dans une usine abstraite , Il existe un concept de famille de produits : C'est - à - dire une famille de produits qui sont liés fonctionnellement dans différentes structures de classe de produits . La gamme de produits offerts par le modèle d'usine abstrait constitue une famille de produits ; Et la gamme de produits offerts par la méthode de l'usine s'appelle une structure hiérarchique .

Analyse des facteurs :

  • Abstract factory: Déclarez un ensemble de méthodes utilisées pour créer une famille de produits , Chaque méthode correspond à un objet ; Plusieurs méthodes d'usine sont déclarées dans l'usine abstraite , Utilisé pour créer différents types

《Grandes usines de première ligneJavaAnalyse des questions d'entrevue+Notes d'apprentissage pour le développement de l'arrière - plan+La dernière vidéo d'architecture+Document d'information sur le code source du projet en direct》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 Partage open source du contenu complet

Objet de, Une usine abstraite peut être une interface , Il peut aussi s'agir d'une classe abstraite ou d'une classe concrète

  • Usine spécifique: L'usine concrète réalise l'usine abstraite , Chaque méthode d'usine renvoie un objet spécifique , Les objets spécifiques créés par une usine spécifique forment une famille

  • Interface de classe abstraite : Fournit un ensemble de méthodes d'affaires que toutes les classes ont

  • Classe abstraite: Utilisé pour mettre en œuvre la méthode d'affaires définie par l'interface abstraite , Mais ce rôle ne fait qu'une implémentation abstraite de la méthode définie par l'interface abstraite , C'est - à - dire que toutes les implémentations sont définies comme des méthodes abstraites , L'implémentation spécifique finale est entièrement confiée à l'implémentation spécifique de la classe . Ce rôle a été introduit principalement pour différentes classes abstraites selon la Déclaration , Diviser les classes en différentes structures hiérarchiques

  • Catégories spécifiques: Ce rôle hérite d'une classe abstraite , Principalement utilisé pour mettre en œuvre des méthodes abstraites déclarées dans une classe abstraite , Compléter les différentes structures hiérarchiques , .Mise en oeuvre concrète des approches commerciales des différentes familles

2、Réalisation


package com.liebrother.designpatterns.abstractfactory;

public class AbstractFactoryTest {

public static void main(String[] args) {

// Les employés de BMW installent les pneus et le volant

AbstractCarFactory bmwCarFacatory = new BMWCarFactory();

bmwCarFacatory.installWheel();

bmwCarFacatory.installSteeringWheel();

// Les employés de Mercedes - Benz installent les pneus et le volant

AbstractCarFactory mercedesCarFacatory = new MercedesCarFacatory();

mercedesCarFacatory.installWheel();

mercedesCarFacatory.installSteeringWheel();

}

}

/**

  • Automotive Abstract factory

*/

interface AbstractCarFactory {

void installWheel();

void installSteeringWheel();

}

/**

  • BMW Factory

*/

class BMWCarFactory implements AbstractCarFactory {

@Override

public void installWheel() {

WheelFacatory wheelFacatory = new BMWWheelFacatory();

String wheel = wheelFacatory.createWheel();

System.out.println(“ Montage des pneus :” + wheel);

}

@Override

public void installSteeringWheel() {

SteeringWheelFacatory steeringWheelFacatory = new BMWSteeringWheelFacatory();

String steeringWheel = steeringWheelFacatory.createSteeringWheel();

System.out.println(“ Installer le volant :” + steeringWheel);

}

}

/**

  • Benz Factory

*/

class MercedesCarFacatory implements AbstractCarFactory {

@Override

public void installWheel() {

Résumé

Nous aimons toujours regarder les grands dieux de la grande usine,Mais en fait, les grands dieux ne sont que des mortels,Comparé aux programmeurs débutants,Ça m'a pris un peu plus de temps,Si vous n'essayez plus,L'écart ne fera qu'augmenter.

Plus ou moins de questions d'entrevue sont certainement utiles pour ce que vous allez faire ensuite,Mais j'aimerais que vous puissiez résumer vos lacunes par des questions d'entrevue,Pour améliorer sa compétitivité technologique de base.Chaque entrevue est une expérience d'alphabétisation de vos compétences,L'effet du résumé de la réponse après l'entrevue est excellent!

Java Mode de conception moyen De Mode usine,java Le principe sous - jacent du mécanisme de réflexion _Interview

Cet article a été publié par CODINGProjet Open Source:【Grandes usines de première ligneJavaAnalyse des questions d'entrevue+Résumé de base notes d'étude+Dernière vidéo d'explication+Code source du projet opérationnel】Inclus

版权声明
本文为[Harmonios Learning]所创,转载请带上原文链接,感谢
https://javamana.com/2021/11/20211125185549208j.html

  1. 图解 Kafka 线程模型及其设计缺陷
  2. Add data files for Oracle tablespaces or temporary tablespaces
  3. Intellij IDEA神器居然还有这些小技巧,mysql集群搭建视频
  4. IntelliJ IDEA(2019)之Web项目创建,掌门一对一java面试题
  5. InnoDB(2,如何访问Redis中的海量数据
  6. InheritableThreadLocal使用详解,java多线程面试题及答案整理
  7. How does Oracle modify the data type of a column
  8. Oracle 12C 12.1.0.1.0 management control file official document translation instructions
  9. Oracle 10g 10.2.0.1 in Oracle Linux 5.4 32bit RAC installation manual (Yimo Xiyang)
  10. Oracle 12C in Oracle Linux 6.5 64bit installation manual
  11. 一天十道Java面试题----第一天(面向对象-------》ArrayList和LinkedList)
  12. Schéma du modèle de fil Kafka et de ses défauts de conception
  13. Starting and shutting down Oracle RAC database cluster
  14. CRS_ Oracle CRS stack is already configured and will be running under init(1M)
  15. Common skills of Oracle stored procedure
  16. Check the number of CPUs, core books and threads of the Linux system
  17. jQuery-实例方法
  18. Oracle de duplicated data
  19. jQuery-dom和jQuery,入口函数(基本知识)
  20. Oracle creates unique constraints on columns that already have duplicate data
  21. JavaScript-拷贝
  22. JavaScript-this指向问题
  23.  There is ^ [[a garbled code problem in the up and down keys in Oracle sqlplus
  24. JavaScript-封装与继承(两种)
  25. JavaScript-包装类型
  26. JavaScript-传值(引用类型,基本类型)
  27. JavaScript-面向对象(构造函数,实例成员,静态成员)
  28. JavaScript-解构赋值
  29. JavaScript-箭头函数
  30. JavaScript-参数
  31. JavaScript-预解析(变量提升)
  32. JavaScript-闭包closure
  33. JavaScript-声明变量的关键字
  34. JavaScript - mot - clé pour déclarer une variable
  35. Fermeture de fermeture JavaScript
  36. JavaScript Pre - parse (promotion des variables)
  37. Paramètres JavaScript
  38. Fonction de flèche JavaScript
  39. JavaScript - déconstruction assignations
  40. Common annotations in springboot
  41. Building CentOS 7.6 with Linux
  42. JavaScript - orienté objet (constructeur, membre d'instance, membre statique)
  43. JavaScript value Transfer (reference type, Basic type)
  44. JavaScript - type d'emballage
  45. linux deepin/ubuntu安装flameshot火焰截图
  46. JavaScript - encapsulation et héritage (deux)
  47. JavaScript JS method for writing 99 multiplication table
  48. 從零開始學java - 第二十五天
  49. Apprendre Java à partir de zéro - jour 25
  50. Les voitures d'hiver, les voitures électriques et les voitures à essence ne sont pas les mêmes?
  51. JavaScript - ceci pointe vers le problème
  52. Copie JavaScript
  53. Spring boot quickly integrates swagger
  54. linux deepin/ubuntu安裝flameshot火焰截圖
  55. Capture d'écran de flamme de l'installateur de flamme Linux deepin / Ubuntu
  56. Jquery DOM et jquery, fonctions d'entrée (bases)
  57. Méthode d'instance jquery
  58. Méthode et démonstration de code dans l'interface de liste en Java
  59. Démarrage du Zookeeper
  60. Java oom Cognition