创造型模式-原型模式(场景体验-》方案解决===代码图解)
发布人:shili8
发布时间:2025-02-20 00:31
阅读次数:0
**创造型模式-原型模式**
在软件设计中,原型模式是一种常见的创造型模式,它允许你创建一个可以克隆自己的对象,这样就可以快速生成多个相同的对象。这种模式特别适合于那些需要大量重复性对象的场景。
**场景体验**
想象一下,你正在设计一个游戏,需要创建多个相同的角色,每个角色都有相同的属性和行为。你可以使用原型模式来实现这一点。
在这个例子中,我们将创建一个`Character`类,它代表游戏中的角色。每个角色都有自己的属性,如名称、年龄和技能。
java// Character.javapublic class Character { private String name; private int age; private Listskills; public Character(String name, int age) { this.name = name; this.age = age; this.skills = new ArrayList<>(); } public void addSkill(String skill) { this.skills.add(skill); } public String getName() { return name; } public int getAge() { return age; } public List getSkills() { return skills; } }
现在,我们需要创建一个可以克隆自己的`Character`对象。我们将使用原型模式来实现这一点。
**方案解决**
在原型模式中,我们首先定义一个抽象类`Prototype`,它包含了一个克隆方法。然后,我们创建一个具体的类`ConcretePrototype`,它继承于`Prototype`并实现了克隆方法。
java// Prototype.javapublic abstract class Prototype { public abstract Prototype clone(); }
java// ConcretePrototype.javapublic class ConcretePrototype extends Prototype { private Character character; public ConcretePrototype(Character character) { this.character = character; } @Override public Prototype clone() { return new ConcretePrototype(character); } }
现在,我们可以使用原型模式来创建多个相同的`Character`对象。
java// Client.javapublic class Client { public static void main(String[] args) { Character character = new Character("John",25); character.addSkill("Magic"); character.addSkill("Healing"); Prototype prototype = new ConcretePrototype(character); // 克隆多个相同的角色 for (int i =0; i < 5; i++) { Prototype clonedCharacter = prototype.clone(); System.out.println("角色 " + i + ": "); System.out.println("名称: " + ((Character) clonedCharacter).getName()); System.out.println("年龄: " + ((Character) clonedCharacter).getAge()); System.out.println("技能:"); for (String skill : ((Character) clonedCharacter).getSkills()) { System.out.println(skill); } } } }
在这个例子中,我们首先创建一个`Character`对象,然后使用原型模式来克隆多个相同的角色。每个角色都有相同的属性和行为。
**代码图解**
下面是原型模式的类图:
markdown+---------------+ | Prototype | +---------------+ | | v+---------------+ | ConcretePrototype| +---------------+ | | v+---------------+ | Character | +---------------+
在这个图中,我们可以看到`Prototype`是抽象类,`ConcretePrototype`是具体的类,它继承于`Prototype`并实现了克隆方法。`Character`是具体的类,它代表游戏中的角色。
原型模式是一种常见的创造型模式,它允许你创建一个可以克隆自己的对象,这样就可以快速生成多个相同的对象。这种模式特别适合于那些需要大量重复性对象的场景。