1. 程式人生 > 其它 >MyBatis 效能優化之延遲載入

MyBatis 效能優化之延遲載入

模板模式

階段1

//程式庫開發人員
class Library
{
public:
  void step1();
  void step3();
  void step5();
}

//應用程式開發人員
class Application
{
public:
  bool step2();
  bool step4();
}

int main()
{
  Labrary lib;
  Application app;
  
  lib.step1();
  
  if(app.step2())
  {
    lib.step3();
  }
  
  for(int i=0;i<4;++i)
  {
    app.step4();
	}
  
  lib.step5();
}

階段2

//應用程式開發人員
class Libary
{
public:
  Libary();
  virtual ~Libary();
  
  void run()
  {
    step1();

    if(step2())
    {
      step3();
    }

    for(int i=0;i<4;++i)
    {
      step4();
    }

    step5();
  }
  
protected:
  void step1();//穩定
  void step3();//穩定
  void step5();//穩定
  
  virtual bool step2();//變化
  virtual bool step4();//變化
}

//應用程式開發人員
class Application : public Libary
{
protected:
	virtual bool step2() override;//子類化實現
	virtual bool step4() override;//子類化實現
}

int main()
{
  Library* lib=new Application();
  lib->run();
  delete lib;
}

模式定義

定義一個操作中的演算法的骨架(穩定),而將一些步驟延遲(變化)到子類中,Template Method 使得子類可

以不改變(複用)一個演算法的結構即可重定義(override重寫)該演算法的特寫步驟。

類圖

classDiagram class AbstractClass{ +TemplateMethod() #PrimitiveOperation1() #PrimitiveOperation1() } class ConcreteClass{ #PrimitiveOperation1() #PrimitiveOperation1() } AbstractClass <|-- ConcreteClass