哪种设计模式用于避免重复数据并一次又一次发送相同的请求



有两个类A类和B类,两个类都使用相同的数据,我正在使用HTTP请求来获取数据。现在,由于两个类都使用相同的数据,因此我可以使用继承并消耗数据。但是,每次我创建A级A级实例时,其发送请求是对服务器的发送请求,并且ClassB类也发生了。B级相同的数据将在不发送新请求的情况下使用?这是示例代码。

Class Parent {
   type data;
   requestService;
   constructor(){
      //retrieve data.
      this.data = this.getData();
   }
   getData(){
     //request server to get the data.
     requestService.getDataFromServer();
   }
}
Class A extends Parent{
   action(){
     //custom implementation for class A using data.   
   }
}
Class B extends Parent{
   action(){
     //custom implementation for class B using data.   
   }
}

在两个类都使用相同数据的上方,但每个类的实现更改。现在,我将仅创建两个类型A和另一个类型B的对象。现在,如果我创建A和B的对象,我将两次请求服务器即使两个请求的响应数据都相同。因此,我想一次和B时一次发送请求,我将使用相同的数据而不是再次发送请求。有什么办法可以实现这一目标?

您需要使用观察者模式。当使用观察者模式A和B类成为您的观察者时,您的数据(HTTP请求(将成为发布者。

观察者模式 - 定义对象之间的一对多依赖关系,以便当一个对象更改状态时,所有依赖者都会自动通知和更新。

主题接口 - 对象使用此接口将其注册为观察者,并将自己删除为观察者。

观察者 - 所有潜在的观察者都需要实现观察者接口。

concretesubject - 始终实现主题。在注册和删除方法中,混凝土主题notifyObservers((方法,用于在状态更改时更新所有当前观察者的方法。

ConcreteObserver - 可以是实现观察者接口的任何类。EAKENTERVER寄存器带有混凝土主题以接收更新的观察者寄存器。

在您的情况下,主题类可以定义如下

interface Parent{
void registerObserver();
void removeObserver();
notifyObserver();
}

然后您的Parent class应该实现父。registerObserver方法应该能够注册其他A类和B类或任何需要父级数据的其他类。removeObserver应该能够删除这些类。

class ParentImpl implements Parent{
  void registerObserver(){...}
  void removeObserver(){....}
  void notifyObserver(){...}
  getData(){....}
}

观察者类将具有一个简单的类别定义如下

interface Observer{
  void update();
}

最后您的A级和B将实现观察者

class B implements Observer{
.......
}

与B类或任何需要使用父级数据的新类相同。

class A implements Observer{
......
}

相关内容

最新更新