Définition (de l'Encyclopédie Baidu)
Utilisez des instances de prototype pour spécifier les types d'objets à créer et créez de nouveaux objets en copiant ces prototypes.
Diagramme de classes UML :
🎜>
Description de chaque partie : La classe prototype Prototype implémente l'interface Cloneable.
ConcretePrototype1 Une sous-classe de la classe prototype Prototypepublic class Client {public static void main(String[] args) {// Director d = new Director(new ConcreteBuilder());// d.construct();ConcretePrototype1 prototype = new ConcretePrototype1();for (int i = 0; i < 10; i++) { ConcretePrototype1 x = (ConcretePrototype1) prototype.clone(); x.test1(); } } }public class Prototype implements Cloneable {public Prototype clone() { Prototype prototype = null;try{ prototype = (Prototype)super.clone(); }catch(CloneNotSupportedException e){ e.printStackTrace(); }return prototype; } }public class ConcretePrototype1 extends Prototype {public void test1() { System.out.println(this); System.out.println("123"); } }
Copier une instance d'objet par clonageLe nouvel objet cloné copie la valeur de l'instance d'origine
Utiliser le mode prototype pour copier un objet n'appellera pas le constructeur de la classe. Étant donné que la copie de l'objet est terminée en appelant la méthode clone de la classe Object, même les autorisations d'accès ne sont pas valides pour le mode prototype. Vous vous souvenez du modèle singleton ? En mode singleton, tant que l'autorisation d'accès du constructeur est définie sur privée, un singleton peut être implémenté. Cependant, la méthode clone ignore directement les autorisations de la méthode constructeur. Par conséquent, le mode singleton est en conflit avec le mode prototype, une attention particulière doit donc être accordée lors de son utilisation.
La méthode clone effectue une copie superficielle, ce qui signifie que s'il s'agit d'un attribut de type référence, elle ne copiera pas, mais copiera uniquement la référence.
Avantages et inconvénients :
Avantages :
La méthode clone est exécutée par la machine virtuelle copiant directement le bloc mémoire, ce qui est beaucoup plus rapide que le nouveau
Obtention de l'objet au moment de l'exécution Et le statut correspondant
Inconvénients :
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!