c++學(xué)習(xí)記錄3(GeekBand)

第三周的課學(xué)到有關(guān)面向?qū)ο蟮脑O(shè)計(jì)模式的東西。拋開課堂上講的三種不談,來說說常用的幾種設(shè)計(jì)模式。

一、Strategy模式

1、兩大原則

Strategy模式體現(xiàn)了如下的兩大原則:

1,針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程。

2,多用組合,少用繼承。


二、Iterator模式

提供一種方法順序訪問一個(gè)聚合對(duì)象中各個(gè)元素, 而又不需暴露該對(duì)象的內(nèi)部表示。

這種設(shè)計(jì)模式非常普遍,

比如Java里面的:

public interface Iterator {

boolean hasNext();

Object next();

void remove();

}

以及C++ STL里面的 iterator使用 ++ 訪問。

三、Singleton模式

下面是個(gè)C++ singleton的類:

、、、

#ifndefSINGLETON_H

#defineSINGLETON_H


#include"synobj.h"


template

classSingleton{

CLASS_UNCOPYABLE(Singleton)

public:

staticT&Instance(){//Uniquepointofaccess

if(0==_instance){

Locklock(_mutex);

if(0==_instance){

_instance=newT();

atexit(Destroy);

}

}

return*_instance;

}

protected:

Singleton(){}

~Singleton(){}

private:

staticvoidDestroy(){//Destroytheonlyinstance

if(_instance!=0){

delete_instance;

_instance=0;

}

}

staticMutex_mutex;

staticT*volatile_instance;//Theoneandonlyinstance

};


template

MutexSingleton::_mutex;


template

T*volatileSingleton::_instance=0;


#endif

、、、


四、Factory Method模式

Factory Method模式在不同的子工廠類生成具有統(tǒng)一界面接口的對(duì)象,一方面,可以不用關(guān)心產(chǎn)品對(duì)象的具體實(shí)現(xiàn),簡化和統(tǒng)一Client調(diào)用過程;另一方面,可以讓整個(gè)系統(tǒng)具有靈活的可擴(kuò)展性。

abstract class BallFactory{

protectedabstractBallmakeBall();//FactoryMethod

}

classBasketballFactextendsBallFactory{

publicBallmakeBall(){//子類實(shí)現(xiàn)FactoryMethod決定實(shí)例化哪一個(gè)類的

returnnewBasketball();

}

}

classFootballFactextendsBallFactory{

publicBallmakeBall(){//子類實(shí)現(xiàn)FactoryMethod決定實(shí)例化哪一個(gè)類的

returnnewFootball();

}

}

classBasketballextendsBall{

publicvoidplay(){

System.out.println("playthebasketball");

}

}

classFootballextendsBall{

publicvoidplay(){

System.out.println("playthefootball");

}

}

abstractclassBall{

protectedabstractvoidplay();

}

publicclasstest{

publicstaticvoidmain(String[]args){

BallFactoryballFactory=newBasketballFact();

Ballbasketball=ballFactory.makeBall();

basketball.play();

ballFactory=newFootballFact();

Ballfootball=ballFactory.makeBall();

football.play();

}

}


這是幾種常用的設(shè)計(jì)模式,剩下的還有很多,畢竟有23種呢。剩下的有時(shí)間慢慢學(xué)習(xí)。

ps:沒找到簡書怎么寫代碼。看著亂糟糟的格式,真是蛋疼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,628評(píng)論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,995評(píng)論 0 11
  • Week11 Notes “對(duì)象性能模式” 單間模式 面向?qū)ο蠛芎玫亟鉀Q了抽象的問題,但是不可避免要付出一定的代價(jià)...
    古來征戰(zhàn)幾人回閱讀 302評(píng)論 0 0
  • 23種設(shè)計(jì)模式 “對(duì)象性能”模式 面向?qū)ο蠛芎玫慕鉀Q了“抽象”的問題,但是必不可免地要付出一定的代價(jià)。對(duì)于通常情況...
    孫浩_9bfd閱讀 598評(píng)論 0 0

友情鏈接更多精彩內(nèi)容