设计模式 原型模式轻谈

原型模式(Prototype Pattern)基本介绍

原型模式属于创建型设计模式

原型表示一个样板对象,借助样板对象,可以克隆更多对象!

原型模式一般用于创建复杂的对象,因为在内存中创建复杂对象的花费时间很长,通过克隆内存中已经存在的对象,可以缩短创建对象时间,也就提高了程序的运行效率

public abstract class Car implements Cloneable {
    abstract void go();

    protected String carName;

    @Override
    protected Object clone() {
        Object object = null;
        try {
            object = super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return object;
    }

    public String getCarName(){
        return carName;
    }
}
public class Audi extends Car {

    public Audi(String carName){
        this.carName = carName;
    }

    @Override
    void go() {
        System.out.println("奥迪发车了");
    }
}
public class BMW extends Car {

    public BMW(String carName){
        this.carName = carName;
    }

    @Override
    void go() {
        System.out.println("BMW发车啦");
    }
}
public class CarCache {
    private Map<String,Car> mCacheMap = new Hashtable();
    
    public Car getOneCar(String carName){
        if(carName == null || carName.isEmpty()) {
            throw new IllegalArgumentException("大哥,起码传参数传对吧");
        }
        Car tempCar = mCacheMap.get(carName);
        Car newCar = null;
        if(tempCar != null) {
            newCar = (Car)tempCar.clone();
        }
        return newCar;
    }

    public void loadCache(){
        Car audi = new Audi("A4L");
        Car bmw = new BMW("320Li");
        mCacheMap.put(audi.getCarName(),audi);
        mCacheMap.put(bmw.getCarName(),bmw);
    }
    
}
public class Main {
    public static void main(String args[]){
        CarCache cache = new CarCache();
        cache.loadCache();
        cache.getOneCar("A4L").go();
    }
}

总结

1、 复杂的对象提前创建好,由容器对象持有,当我们需要获取一个对象,只需要从容器对象中获取,而不是去新创建对象,原型模式,你懂了吗?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值