设计模式(二)

设计模式(二)

链接

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();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值