模板方法和算法骨架

    核心:父类提供数据的处理流程,而子类负责具体的环节的实现,必须具备相同的处理结构,就是算法骨架。    

查看设计模式中的模板模式的时候,对于一个惯用的设计方案提供了如下的解决方案,尤其是如何处理当一些具体的实现过程不一样的思路。应用场景如下:

        在整个框架中,所有方法的逻辑都是一样的,例如:

在所有的处理逻辑都是一样的情况下,父类提供了一个处理的框架,而子类针对处理的过程中的不同点,进行覆盖(在这里声明,麦盖和重载不了解)。

        以下是处理的逻辑:采集信号  处理信号  发送信号 (其中处理接收的信号,可能是电信号,有可能是光信号等等,所以他们发送和接收的规则都是不一样的),但是有一点是相同的,他们必须在规定时间内收集足够多的数据返回,与此同时,处理信号的过程都是一样的,这样子我们就可以简单的编写代码如下,其中父类提供了实现逻辑的框架,而子类实现了具体的逻辑结构。

概要分析如下的结构:父类实现处理逻辑,子类必须实现基本的实现

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;
    }
};

起哄应用到了继承,多态,当然多态只是一个可有可无的东西,但是在实际的应用中,我们需要保存对象的指针到一个数组中,如果不用多态保存基类的地址,可能需要一个联合体来解决存储的问题

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。