原型模式

原型模式:是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它听了一种创建对象的最佳方式。

这种模式实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时则采用这种模式。如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在一个请求是返回它的克隆,在需要时更新数据库,以此来减少数据库的调用。

使用场景:资源优化场景,类初始化需要消耗非常多的资源,这个资源宝库数据、硬件资源等。3.性能和安全要的场景 4.通过new产生一个对象需要非常繁琐的数据准备货访问权限,使用原型模式。5.一个对象多个修改则的场景。6.一个对象需要提供给其他对象访问,而且各个调用则可能需要修改其值是,可以考虑使用原型模式拷贝多个对象共调用者使用7.在实际项目中,原型模式很好单独出现

实现:

1.创建一个实现了Cloneable接口的抽象类

public abstract class Shape implements Cloneable{

  private String id;

  protected String type;

  abstract void draw();

   public String getType(){

    return type;

  }

  public Object clone(){

       Object clone=null;

       try{

           clone=super.clone();

           }catch(cloneNotSuportedException e){

             

       }

    return clone;

  }

}


2.创建扩展上面抽象类的实体类

public class Rectangle extends Shape{

   public Rectangele(){

        type="Rectangel";

  }

void draw(){

        sysout("Inside Rctangle");

 }

}

public class Square extends Shape{

   public square(){

        type="square";

}

  void draw(){

      sysout("Inside square::draw() method");

}


3.创建一个类,从数据库获取实体类,并把它们存储在一个hashTable中

ShapeCache.java

public class ShapeCache{

  private static Hashtable<String,Shape> shapeMap=new HasHtable<String ,shap> shapeMap=newHahstable<String,Shape>();

public static Shape getShape(Stirng shapeId){

   Shape cachedShape=shapMap.get(shapeId);

   return (Shape)cachedShape.clone();

}

public static void loadCache(){

  Circle circle=new Circle();

   circle.setId(1);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值