设计模式:原型模式
? ?java中的Object類是所有類的根類。Object類提供了一個clone()方法,該方法可以將一個java對象復制一份,但是需要實現clone的java類必須要實現一個接口Cloneable,該接口表示該類能夠復制且具有復制的能力。
?
??原型模式基本介紹
? ? ? 1). 原型模式是指: 用原型實例指定創建對象的種類,并且通過拷貝這些原型,創建新的對象。
? ? ? 2). 原型模式是一種創建型的設計模式,允許一個對象再創建另外一個可定制的對象,無需知道如何創建的細節。
? ? ?3). 工作原理是通過將一個原型對象傳給那個要發動創建的對象。這個要發動創建的對象通過請求原型對象拷貝它們自己來實施創建,即?對象.clone()。
?
Prototype:?原型類,??聲明一個克隆自己的接口。
CreatePrototype:?具體的原型類,實現一個克隆自己的操作。
?
?
public class Car implements Cloneable{String color; // 顏色String brand; // 品牌public Car() {}public Car(String color, String brand) {super();this.color = color;this.brand = brand;}// 克隆該實例,使用默認的clone方法來完成@Overrideprotected Object clone() throws CloneNotSupportedException {Car car = (Car)super.clone();return car;}public String getColor() {return color;}@Overridepublic String toString() {return "Car [color=" + color + ", brand=" + brand + "]";}public void setColor(String color) {this.color = color;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;} } public class Client {public static void main(String[] args) throws CloneNotSupportedException{Car car = new Car("white", "BMW");Car car2 = (Car)car.clone();Car car3 = (Car)car.clone();System.out.println(car2);System.out.println(car3);} }在spring中, scope="prototype"就是使用原型模式創建bean的
<bean id="student" class="com.atChina.Test.Student" scope="prototype"><property name="name" value="宋江"/><property name="age" value="20" /></bean>?
?深拷貝:
? ?深拷貝實現方式一: 重寫clone方法來實現深拷貝。
? ?深拷貝實現方式二: 通過對象序列化實現深拷貝。
總結
- 上一篇: 设计模式:单例模式在JDK中的应用
- 下一篇: 设计模式:建造者模式