码迷,mamicode.com
首页 > 其他好文 > 详细

ppt

时间:2015-05-08 17:54:10      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

 

class Singleton {

public:

  static Singleton* getInstance();

private:

  Singleton() {}

  //Singleton(const Singleton&);

  //Singleton& operator=(const Singleton&);

  static Singleton* instance;

};

Singleton* Singleton::instance = NULL;

Singleton* Singleton::getInstance() {

  if (instance == NULL) {

  instance = new Singleton();

  }

  return instance;

}

 

•基类定义算法的骨架,而将部分步骤的实现在子类中完成。
•模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
•应用较广
 
•在setting 某个ug中,需要创建多个view,每个view的共同基本行为是:首先通过API获取系统信息,然后根据这些信息画各种widget
•如果使用模板模式,应该怎样写?
 
•/* 模板类,由模板方法来控制整体逻辑,子方法由子类实现 */
•class AbstractPage {
•public:
•    virtual void getInfo() = 0;
•    virtual void createWidget() = 0;
•    void drawPage();  //this is template method to control the logic
•};
 
•void AbstractPage::drawPage() {
•    cout<<"First step"<<endl;
•    getInfo();
•    cout<<"Second step"<<endl;
•    createWidget();
•}
 

/* 子类A,实现具体方法 */

class PageA: public AbstractPage {

public:

    void getInfo();

    void createWidget();

};

void PageA::getInfo() {

    cout<<"Get page A‘s info"<<endl;

}

void PageA:: createWidget() {

    cout<<"create page A‘s view with the info"<<endl;

}

 

/* 子类B,实现具体方法 */

class PageB: public AbstractPage {

public:

    void getInfo();

    void createWidget();

};

void PageB::getInfo() {

    cout<<"Get page B‘s info"<<endl;

}

void PageB:: createWidget() {

    cout<<"create page B‘s view with the info"<<endl;

}

 

•/* 测试 */
•void main() {
•    AbstractPage *pageA = new PageA();
•    pageA->drawPage();
•    cout<<endl;
•    AbstractPage *pageB = new PageB();
•    pageB->drawPage();
•    delete pageA;
•    delete pageB;
•    system("pause");
•}
 
•/* Result
•    First step
•    Get page A‘s info
•    Second step
•    create page A‘s view with the info
•    First step
•    Get page B‘s info
•    Second step
•    create page B‘s view with the info
•*/
 
技术分享

ppt

标签:

原文地址:http://www.cnblogs.com/hushpa/p/4488389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!