核心:父类提供数据的处理流程,而子类负责具体的环节的实现,必须具备相同的处理结构,就是算法骨架。
查看设计模式中的模板模式的时候,对于一个惯用的设计方案提供了如下的解决方案,尤其是如何处理当一些具体的实现过程不一样的思路。应用场景如下:
在整个框架中,所有方法的逻辑都是一样的,例如:
在所有的处理逻辑都是一样的情况下,父类提供了一个处理的框架,而子类针对处理的过程中的不同点,进行覆盖(在这里声明,麦盖和重载不了解)。
以下是处理的逻辑:采集信号 处理信号 发送信号 (其中处理接收的信号,可能是电信号,有可能是光信号等等,所以他们发送和接收的规则都是不一样的),但是有一点是相同的,他们必须在规定时间内收集足够多的数据返回,与此同时,处理信号的过程都是一样的,这样子我们就可以简单的编写代码如下,其中父类提供了实现逻辑的框架,而子类实现了具体的逻辑结构。
概要分析如下的结构:父类实现处理逻辑,子类必须实现基本的实现
class CSignal{ public: void Run() { RecvSignal(); ProcessSigal(); ReactorSignal(); } virtual ~CSignal() { } protected: virtual void RecvSignal()=0; void ProcessSigal() { cout<<"handle signal"<<endl; } virtual void ReactorSignal()=0; }; class CLigntSigle:public CSignal { public: CLigntSigle() { cout<<"start to run light signal run "<<endl; } ~CLigntSigle() { cout<<"Finish to run light signal"<<endl; } void RecvSignal() { cout<<"recv light signal"<<endl; } void ReactorSignal() { cout<<"reactor light signal"<<endl; } }; class CElectSigle:public CSignal { public: CElectSigle() { cout<<"start to run elect signal run"<<endl; } ~CElectSigle() { cout<<"Finish to run elect signal"<<endl; } void RecvSignal() { cout<<"recv elect signal"<<endl; } void ReactorSignal() { cout<<"reactor elect signal"<<endl; } };
起哄应用到了继承,多态,当然多态只是一个可有可无的东西,但是在实际的应用中,我们需要保存对象的指针到一个数组中,如果不用多态保存基类的地址,可能需要一个联合体来解决存储的问题
时间: 2024-10-09 13:56:17