读者容错模式(Tolerant Reader Pattern)

读者容错模式确保在数据模型变化时,仍能从数据模型中尽可能地读取所需信息,保持读取操作的健壮性。例如,通过RainbowFishSerializer读取RainbowFish类的属性,当RainbowFish类升级为RainbowFishV2时,读取代码需要适应新的数据结构,防止因结构变化导致的程序崩溃。
摘要由CSDN通过智能技术生成

读者容错模式是当从一个数据模型中读取数据的时候,无论这个数据模型如何变换,尽最大可能读取自己需要的数据,达到读取数据健壮性的要求。例如我们有一个数据模型类:RainbowFish,表示一种鱼。有一个读写数据的类:RainbowFishSerializer,来获取RainbowFish的name、age、lengthMeters、weightTons等数据。但是RainbowFish是第三方提供,可能在迭代升级的时候改变了类结构,例如增加了子类:RainbowFishV2,记录了更加详细的信息。数据结构发生了变化,我们在读取的时候就要进行适配,避免由于改变导致的crash。

代码:

/**
 * 
 * RainbowFish is the initial schema
 *
 */
public class RainbowFish implements Serializable {

  private static final long serialVersionUID = 1L;

  private String name;
  private int age;
  private int lengthMeters;
  private int weightTons;

  /**
   * Constructor
   */
  public RainbowFish(String name, int age, int lengthMeters, int weightTons) {
    this.name = name;
    this.age = age;
    this.lengthMeters = lengthMeters;
    this.weightTons = weightTons;
  }

  public String getName() {
    return name;
  }

  public int getAge() {
    return age;
  }

  public int getLengthMeters() {
    return lengthMeters;
  }

  public int getWeightTons() {
    return weightTons;
  }

}

/**
 * 
 * RainbowFishV2 is the evolved schema
 *
 */
public class RainbowFishV2 extends RainbowFish {

  private static final long serialVersionUID = 1L;

  private boolean sleeping;
  private boolean hungry;
  private boolean angry;

  public RainbowFishV2(String name, int age, int lengthMeters,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值