设计模式(二)
链接
JVM学习笔记(一)
JVM学习笔记(二)
JVM学习笔记(三)
JVM学习笔记(四)
(待更新…)
Java NIO
(待更新…)
设计模式(一)
设计模式(二)
设计模式(三)
设计模式(四)
(待更新…)
1. 原型模式
关键实现
原型模式的核心关键实现是clone()方法, 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式就是原型拷贝。
代码实现
通过实现Cloneable接口。
public class Student implements Cloneable {
private int id;
private String name;
private int score;
// 复制新对象并返回:
public Object clone() {
Student std = new Student();
std.id = this.id;
std.name = this.name;
std.score = this.score;
return std;
}
}
1.1 深拷贝和浅拷贝
浅拷贝
复制基本类型的属性;引用类型的属性复制,复制栈中的变量 和 变量指向堆内存中的对象的指针,不复制堆内存中的对象
深拷贝
复制基本类型的属性;引用类型的属性复制,复制栈中的变量 和 变量指向堆内存中的对象的指针和堆内存中的对象。
2. 建造者模式
建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。就好像搭房子一样。
建造者:创建和提供实例,导演(指挥者):管理建造出来的实例的依赖关系。
代码实现
工人接口
public Interface Iworker{
//工人要完成以下功能
public Iworker buildroof(String roof);
public Iworker buildwall(String wall);
public Iworker buildfloor(String floor);
//放回房子
public Home getHome();
}
房子实现类
public class Home{
private String roof;
private String wall;
private String floor;
...
//房子的get和set方法
}
工人
工人建造房子。
public class worker implements Iworker{
private Home home;
//工人先建造一个空的房子
public worker(){
this.home = new home();
}
@Override
public Iworker buildroof(String roof){
home.setRoof(roof);
System.out.println("屋顶建造成功");
return this;
}
@Override
public Iworker buildwall(String wall){
home.setRoof(wall);
System.out.println("墙建造成功");
return this;
}
@Override
public Iworker buildfloor(String floor){
home.setRoof(floor);
System.out.println("地板建造成功");
return this;
}
public Home getHome(){
return home;
}
}
指挥者
负责指挥建造
public class Director{
public Product build(builder builder){
builder.buildroof("黄金屋盖");
builder.buildfloor("黄金地板");
builder.buildroof("黄金墙");
return builder.getHome();
}
}