当前位置:   article > 正文

责任链模式_责任链模式cout << "处理车头" << endl;

责任链模式cout << "处理车头" << endl;

该模式构造一系列分别担当不同职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称为责任链模式。

  1. class CarHandle {
  2. public:
  3. virtual void HandleCar()=0;
  4. CarHandle* setnextHandle(CarHandle *handle)
  5. {
  6. this->m_carhandle = handle;
  7. return m_carhandle;
  8. }
  9. protected:
  10. CarHandle *m_carhandle;
  11. };
  12. class HeadCarHandle :public CarHandle
  13. {
  14. virtual void HandleCar() {
  15. cout << "车头" << endl;
  16. if (m_carhandle != NULL) {
  17. m_carhandle->HandleCar();
  18. }
  19. }
  20. };
  21. class BodyCarHandle :public CarHandle
  22. {
  23. virtual void HandleCar() {
  24. cout << "车身" << endl;
  25. if (m_carhandle != NULL) {
  26. m_carhandle->HandleCar();
  27. }
  28. }
  29. };
  30. class TailCarHandle :public CarHandle
  31. {
  32. virtual void HandleCar() {
  33. cout << "车尾" << endl;
  34. if (m_carhandle != NULL) {
  35. m_carhandle->HandleCar();
  36. }
  37. }
  38. };
  39. void main()
  40. {
  41. CarHandle *headhandle = new HeadCarHandle;
  42. CarHandle *Bodyhandle = new BodyCarHandle;
  43. CarHandle *Tailhandle = new TailCarHandle;
  44. headhandle->setnextHandle(Bodyhandle);
  45. Bodyhandle->setnextHandle(Tailhandle);
  46. Tailhandle->setnextHandle(NULL);
  47. headhandle->HandleCar();
  48. delete Tailhandle;
  49. delete Bodyhandle;
  50. delete headhandle;
  51. system("pause");
  52. }

这里我们可以理解成和链表的实现差不多,在执行该任务的时候就决定下一个任务是什么。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/497906
推荐阅读
相关标签
  

闽ICP备14008679号