java设计模式之原型模式
2017-11-27 12:02
459 查看
java设计模式参考文章:
Java设计模式实战,23种设计模式介绍以及在Java中的实现,Java设计模式, Java经典设计模式之五大创建型模式
## 定义 ##
## 代码示例 ##
## 优点 ##
## 缺点 ##
## 解析 ##
Java设计模式实战,23种设计模式介绍以及在Java中的实现,Java设计模式, Java经典设计模式之五大创建型模式
## 定义 ##
Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。 使用Prototype模式创建的实例,具有与原型一样的数据。
## 代码示例 ##
package com.design_pattern.Prototype; import java.io.*; import java.util.List; /** * @author bwx * @date 2017/11/27 */ public class Person implements Cloneable, Serializable { private static final long serialVersionUID = -6890856494991687711L; private String name; private int age; private List<String> friends; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public List<String> getFriends() { return friends; } public void setFriends(List<String> friends) { this.friends = friends; } // 利用序列化实现深复制 Person需要先实现Serializable接口. @Override public Object clone() throws CloneNotSupportedException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(this); ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray())); return ois.readObject(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; // 浅复制 // return super.clone(); } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", friends=" + friends + '}'; } }
## 优点 ##
1.当创建类的新实例的代价更大时,使用原型模式复制一个已有的实例可以提高创建新实例的效率。 2.可以动态的保存当前对象的状态。在运行时,可以随时使用对象流保存当前对象的一个复制品。 3.可以在运行时创建新的对象,而无须创建一系列类和集成结构。 4.可以动态的添加、删除原型的复制品。
## 缺点 ##
## 解析 ##
1.程序需要从一个对象出发,得到若干个和其状态相同,并可独立变化其状态的对象时。 2.当对象的创建需要独立于它的构造过程和表示时。 3.一个类创建实例状态不是很多,那么就可以将这个类的一个实例定义为原型,那么通过该实例复制该原型得到新的实例。 4.可能比重新使用类的构造方法创建新实例更方便 原型模式很少单独出现, 一般都是与工厂方法模式一起出现, 通过clone方法创建一个对象, 然后由工厂返回给调用者. 像Spring中的Bean的创建模式就有singleton与prototype模式.
相关文章推荐
- Java 设计模式 原型模式详解
- java设计模式之原型模式
- java设计模式-原型模式
- Java设计模式系列1--原型模式(Prototype Method)
- 设计模式(五)----- 原型模式(Prototype)----(JAVA版)
- JAVA设计模式是个什么玩意儿_05_原型模式
- JAVA设计模式之原型模式
- Java设计模式---原型模式(Prototype)
- Java设计模式之原型模式
- JAVA设计模式之【原型模式】
- Java设计模式——原型模式(Prototype Pattern)
- JAVA-设计模式之原型设计
- java设计模式--原型设计模式 Prototype
- java设计模式(创建型)之原型模式
- JAVA设计模式之原型模式
- 浅谈Java设计模式(五)原型模式(Prototype)
- Java设计模式 - Prototype(原型模式)
- JAVA设计模式之四:原型模式
- JAVA设计模式之原型模式
- java-设计模式-创建模式-原型模式prototype