(資料圖片)
演示原型模式的實(shí)現(xiàn)方法:
// 原型接口public interface Prototype { Prototype clone();}// 具體的學(xué)生類,實(shí)現(xiàn)原型接口并重寫復(fù)制方法public class Student implements Prototype { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } 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; } // 實(shí)現(xiàn) clone() 方法,返回一個(gè)新的學(xué)生對象并復(fù)制原有對象的屬性 @Override public Prototype clone() { return new Student(name, age); }}// 客戶端代碼public class Client { public static void main(String[] args) { // 創(chuàng)建原型對象 Student stu1 = new Student("張三", 20); // 克隆新對象并修改屬性 Student stu2 = (Student) stu1.clone(); stu2.setName("李四"); stu2.setAge(21); // 打印結(jié)果 System.out.println("stu1: " + stu1.getName() + ", " + stu1.getAge()); System.out.println("stu2: " + stu2.getName() + ", " + stu2.getAge()); }}
在這個(gè)示例代碼中,我們定義了一個(gè)原型接口 Prototype 和一個(gè)具體的學(xué)生類 Student,該類實(shí)現(xiàn)了原型接口并重寫了 clone() 方法。在客戶端代碼中,我們創(chuàng)建了一個(gè)原型對象 stu1,并通過克隆原型對象來生成一個(gè)新的學(xué)生對象 stu2,然后修改 stu2 對象的屬性并打印結(jié)果。由于 stu1 和 stu2 對象是互相獨(dú)立的,因此修改 stu2 的屬性不會影響 stu1 對象的屬性。
需要注意的是,在實(shí)現(xiàn)原型模式時(shí),要確保克隆對象的深淺復(fù)制問題。在示例代碼中,我們只需要對基本類型的成員變量進(jìn)行復(fù)制,因此可以使用淺復(fù)制來實(shí)現(xiàn) clone() 方法。但如果 Student 類中包含了非基本類型的成員變量,例如一個(gè)引用類型的屬性 Address,那么就需要對這個(gè)屬性進(jìn)行深度克隆,否則復(fù)制出來的新對象和原有對象會共享這個(gè)引用類型的屬性,可能會引發(fā)潛在的問題。
因此,在實(shí)現(xiàn)原型模式時(shí),需要根據(jù)具體的場景選擇適當(dāng)?shù)膹?fù)制方法來確保克隆對象的正確性。如果對象比較簡單,只包含基本類型的成員變量,可以使用淺復(fù)制來實(shí)現(xiàn) clone() 方法;如果對象比較復(fù)雜,包含了多個(gè)引用類型的成員變量,就需要使用深復(fù)制來確保新對象和原有對象的屬性是完全獨(dú)立的。

- 溢價(jià)是什么意思?溢價(jià)是貴了還是便宜了?在股票市場上,溢價(jià)的意思就是當(dāng)前股價(jià)高于公司的內(nèi)在價(jià)值,...
- 雙軌制是什么意思?雙軌制產(chǎn)生的原因是什么?中國的雙軌制是計(jì)劃經(jīng)濟(jì)體制和市場經(jīng)濟(jì)體制并行,是計(jì)劃經(jīng)濟(jì)...
- 逆差和順差是什么意思?貿(mào)易順差好還是逆差好?這是經(jīng)濟(jì)用語,一般指貿(mào)易順差和逆差,就是出口大于進(jìn)口就叫...
- 開曼群島屬于哪個(gè)洲?開曼群島是一個(gè)國家嗎?開曼群島屬于北美洲。開曼群島是英國在美洲西加勒比群島的一...
- 狼的精神是什么?《狼道》金句有哪些?狼的精神經(jīng)典十六字是如下:一、發(fā)憤圖強(qiáng):狼不會為了莊嚴(yán),...
- 股市崩盤是什么意思?股市崩盤意味著什么?
2023-04-28 15:12:54
- 今天股市為什么大跌?中概股為什么跌這么慘?
2023-04-27 16:52:27
- 轉(zhuǎn)債股票是什么?債轉(zhuǎn)股為什么莊家要壓低股價(jià)?
2023-04-27 16:44:16
- 什么是均線?均線的含義及作用?
2023-04-26 15:41:21
- 每股面值是什么意思?股票面值都是1元嗎?
2023-04-25 16:42:22