设计模式笔记系列 第二篇

本文介绍了设计模式中的原型模式、策略模式、适配器模式和模板方法模式,包括它们的定义、结构和代码实现,以及应用场景和区别。

        上篇我们笔记了可能都比较熟悉的简单工厂模式、工厂方法模式、抽象工厂模式以及单例模式。这篇咱们继续做笔记,介绍下原型模式、策略模式、适配器模式和模板模式。

        1、原型模式

                (一)、定义

                        用原型实例指定创建对象的类型,并通过拷贝这些原型来创建新的对象。

                (二)、结构

                        

    作为原型的对象,需要声明 Cloneable接口,实现clone接口。通过实现的clone方法,我们可以将原来对象的数据,直接复制一份。但要注意复制后的数据和原来的的数据不是同一个对象。

                (三)、代码演示

/**
 * @Description: 原型模式
 */
public class OriginalMode implements Cloneable{

    private Integer id;
    private String name;
    private kidsMode kidsMode;

    public OriginalMode() {
    }

    public OriginalMode(Integer id, String name, kidsMode kidsMode) {
        this.id = id;
        this.name = name;
        this.kidsMode = kidsMode;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public kidsMode getKidsMode() {
        return kidsMode;
    }

    public void setKidsMode(kidsMode kidsMode) {
        this.kidsMode = kidsMode;
    }

    @Override
    public OriginalMode clone() {
        OriginalMode originalMode = null;
        try {
            originalMode = (OriginalMode) super.clone();
            // 防止属性对象在克隆,跟源对象共享属性对象
            kidsMode keyStroke = this.kidsMode.clone();
            originalMode.setKidsMode(keyStroke);
            return originalMode;
        } catch (CloneNotSupportedException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public String toString() {
        return "hashcode:"+ this.hashCode() +", OriginalMode{" +
                "id=" + 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值