今天去打钥匙,在等待打钥匙的过程中,突然想到了设计模式中的原型(Prototype)模式。师傅打钥匙的过程大概是这样的,师傅拿出一把钥匙,这把钥匙暂时是什么锁都不能开的,然后我告诉师傅要按着我的要求复制一把,然后师傅就按着我这把钥匙的要求复制出了。来看看

下面我们用代码来看看,钥匙原型
package com.tankiy.Prototype;
import java.util.Properties;
/**
* <p>Title: 原型模式(Prototype)</p>
*
* <p>Description: </p>
*
* @author Tankiy
* @version 1.0
*/
public abstract class Prototype implements Cloneable {
private String name;
public Prototype(String name) {
this.name = name;
}
public abstract Prototype Clone();
public abstract void Display();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.tankiy.Prototype;
/**
* <p>Title: 原型模式(Prototype)</p>
*
* <p>Description: </p>
*
* @author Tankiy
* @version 1.0
*/
public class Key extends Prototype {
public Key(String name) {
super(name);
}
public Prototype Clone() {
try {
return (Prototype) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return null;
}
public void Display() {
System.err.println("类型:" + getName());
}
}
package com.tankiy.Prototype;
/**
* <p>Title: 原型模式(Prototype)</p>
*
* <p>Description: </p>
*
* @author Tankiy
* @version 1.0
*/
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
Prototype key1 = new Key("钥匙1");
key1.Display();
Prototype key2 = key1.Clone();
key2.setName("钥匙2");
key2.Display();
}
}
再看下UML类图

来试试吧。

本文通过一个简单的Java代码实例,详细解析了原型模式(Prototype)的概念及其实现过程,从抽象类Prototype到具体实现类Key,展示了如何通过复制机制创建相似对象,同时介绍了原型模式在实际开发中的应用场景。
121

被折叠的 条评论
为什么被折叠?



