将多种功能设计为一种功能对多种功能的实现

时间:2019-07-14 19:37:27

标签: java design-patterns

以下是代码流:

面向客户类:

class Main{
   void set(String key, String value, ...){
      wrapper.set(key, value, ..);
   }

   String get(String key, ...){
       return wrapper.get(key, ...);
   }

}
/**
 Wrapper/Facade layer which forwards the call to dao layer
 Currently Wrapper layer code looks ugly
 */
class Wrapper{
   void set(String key, String value, ...){
      executePreExecutors()
      backend.set(key, value, ..);
      executePostExecutors()
   }

   String get(String key, ...){
       executePreExecutors()
       backend.get(key, ...);
       executePreExecutors()
   }
}
 //db sdk connection classes
class backend{
    void set(String key, String value, ...){
      db.set(key, value, ..);
   }

   String get(String key, ...){
       return db.get(key, ...);
   }
}

上面的代码可以正常工作,但是Wrapper在包装器的所有方法中对执行器的前/后执行了大量重复调用。我想要类似下面的内容,但是由于不同的方法具有不同的返回类型而面临问题:

class Wrapper{
   <Return Type> wrap(input data){
      executePreExecutors();
      backend.method(input data);
      executePostExecutors();
   }
}

我面临的问题是如何归纳以上代码,以免使包装层看起来丑陋

1 个答案:

答案 0 :(得分:0)

如果我了解您的问题和标签,则可以使用模板设计模式来解决此类问题。请参阅此Wiki链接。

https://en.wikipedia.org/wiki/Template_method_pattern

您也可以将GOF模式用作模板设计模式。