admin 管理员组

文章数量: 1087675


2024年4月28日发(作者:linux虚拟机忘记登录密码怎么办)

void showMessageOne()

{

printf("This is message onen");

}

void showMessageTwo()

{

printf("This is message twon");

}

void showMessageThree()

{

printf("This is message threen");

}

int main()

{

//函数指针+std::map取代switch

typedef void (*func)();

std::map funcMap;

(std::make_pair(enumOne,showMessageOne));

(std::make_pair(enumTwo,showMessageTwo));

(std::make_pair(enumThree,showMessageThree));

funcMap[enumOne]();

funcMap[enumTwo]();

funcMap[enumThree]();

return 0;

}

4.状态模式取代switch

#include

class Context;

class State

{

public:

State() {}

virtual ~State() {}

virtual void showMessage(Context *pContext) = 0;

};

class MessageOne :public State

{

public:

MessageOne() {}

~MessageOne() {}

void showMessage(Context *pContext)

{

printf("This is message onen");

}

};

class MessageTwo :public State

{

public:

MessageTwo() {}

~MessageTwo() {}

void showMessage(Context *pContext)

{

printf("This is message twon");

}

};

class MessageThree :public State

{

public:

MessageThree() {}

~MessageThree() {}

void showMessage(Context *pContext)

{

printf("This is message threen");

}

};

class Context

{

public:

Context(State *pState) : m_pState(pState) {}

void Request()

{

if (m_pState)

{

m_pState->showMessage(this);

}

}

void ChangeState(State *pState)

{

m_pState = pState;

}

private:

State *m_pState;

};

int main()

{

State *pStateA = new MessageOne();

State *pStateB = new MessageTwo();

State *pStateC = new MessageThree();

Context *pContext = new Context(pStateA);

pContext->Request();

pContext->ChangeState(pStateB);

pContext->Request();

pContext->ChangeState(pStateC);

pContext->Request();

delete pContext;

delete pStateC;

delete pStateB;

delete pStateA;

return 0;

}

5. 多态+模板取代switch

#include

enum EnumType

{

enumOne,

enumTwo,

enumThree

};

class Base

{

public:

Base() {}

virtual ~Base() {}

virtual void showMessage() {}

};

class MessageOne :public Base

{

public:

MessageOne() {}

~MessageOne() {}

void showMessage()

{

printf("This is message onen");

}

};

class MessageTwo :public Base

{

public:

MessageTwo() {}

~MessageTwo() {}

void showMessage()

{

printf("This is message twon");

}

};

class MessageThree :public Base

{

public:

MessageThree() {}

~MessageThree() {}

void showMessage()

{

printf("This is message threen");

}

};

template

void show( S shape)

{

ssage();

}

int main()

{

MessageOne shape1;

MessageTwo shape2;

MessageThree shape3;

show(shape1);

show(shape2);

show(shape3);

return 0;

}

参考:


本文标签: 取代 忘记 登录 密码 状态