prototype原型模式
生活随笔
收集整理的這篇文章主要介紹了
prototype原型模式
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/**
* 原型模式 Prototype
* 用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),并通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象
*/
需求: public class Resume {
/**
* 要求:一個(gè)簡(jiǎn)歷類(lèi),必須有姓名,可以設(shè)置性別和年齡,可以設(shè)置工作經(jīng)歷,最終需要三份簡(jiǎn)歷
*/
String name;
int age;
String gender;
String timeArea;
String company;
public Resume(String name) {
this.name = name;
}
public void setPersonInfo(String gender, int age){
this.gender = gender;
this.age = age;
}
public void setWorkExperience(String timeArea, String company){
this.timeArea = timeArea;
this.company = company;
}
public void display(){
System.out.println(name + gender + age);
System.out.println("工作經(jīng)歷: " + timeArea +" " + company);
}
public static void main1(String[] args){
Resume a = new Resume("大鳥(niǎo)");
a.setPersonInfo("男", 21);
a.setWorkExperience("上海", "xxx公司");
Resume b = new Resume("大鳥(niǎo)");
b.setPersonInfo("男", 21);
b.setWorkExperience("上海", "xxx公司");
Resume c = new Resume("大鳥(niǎo)");
c.setPersonInfo("男", 21);
c.setWorkExperience("上海", "xxx公司");
a.display();
b.display();
c.display();
}
改進(jìn):
public void copySome(String[] args){
Resume a = new Resume("大鳥(niǎo)");
a.setPersonInfo("男", 21);
a.setWorkExperience("上海", "xxx公司");
Resume b = a;
Resume c = a;
a.display();
b.display();
c.display();
}
引出原型模式。
* 原型模式 Prototype
* 用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),并通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象
*/
需求: public class Resume {
/**
* 要求:一個(gè)簡(jiǎn)歷類(lèi),必須有姓名,可以設(shè)置性別和年齡,可以設(shè)置工作經(jīng)歷,最終需要三份簡(jiǎn)歷
*/
String name;
int age;
String gender;
String timeArea;
String company;
public Resume(String name) {
this.name = name;
}
public void setPersonInfo(String gender, int age){
this.gender = gender;
this.age = age;
}
public void setWorkExperience(String timeArea, String company){
this.timeArea = timeArea;
this.company = company;
}
public void display(){
System.out.println(name + gender + age);
System.out.println("工作經(jīng)歷: " + timeArea +" " + company);
}
public static void main1(String[] args){
Resume a = new Resume("大鳥(niǎo)");
a.setPersonInfo("男", 21);
a.setWorkExperience("上海", "xxx公司");
Resume b = new Resume("大鳥(niǎo)");
b.setPersonInfo("男", 21);
b.setWorkExperience("上海", "xxx公司");
Resume c = new Resume("大鳥(niǎo)");
c.setPersonInfo("男", 21);
c.setWorkExperience("上海", "xxx公司");
a.display();
b.display();
c.display();
}
改進(jìn):
public void copySome(String[] args){
Resume a = new Resume("大鳥(niǎo)");
a.setPersonInfo("男", 21);
a.setWorkExperience("上海", "xxx公司");
Resume b = a;
Resume c = a;
a.display();
b.display();
c.display();
}
引出原型模式。
深拷貝與淺拷貝:
區(qū)別在于淺拷貝對(duì)于引用數(shù)據(jù)類(lèi)型只是引用的傳遞,可能導(dǎo)致克隆體和本體共用一個(gè)引用變量,造成互相影響。深拷貝需要重寫(xiě)clone,進(jìn)行引用對(duì)象的值傳遞。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的prototype原型模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP设计模式系列 - 解释器模式
- 下一篇: Android中个人推崇的数据库使用方式