天天看點

C++用政策而非繼承

在實作一個​

​功能​

​​時,通過定制不同​

​政策​

​​來提供不同功能.本來是​

​F​

​​中的​

​f​

​​,但我們不用​

​λ​

​​,​

​λ​

​​太難看.

我們把​​

​λ​

​​放進​

​構​

​​裡面包裝,然後取個​

​名字​

​​,以後就可以直接用了,是以這個​

​構名​

​​就是個​

​政策​

​​名字.

如下,1是概念,2是基本功能:

元<類 T>概念 可分塊=要求(T&a,串&b){a.分開(b);};
元<可分塊 T>構 分塊基{
    空 分(){//動作,要調用.
        ...//前面
            如(T::分開(c)){//這是政策類
                動作(c);
            }
        ...//後面實作.
    }
};      

然後實作​

​政策​

​:

構 前杠分{
    極 分開(串&a){中(全為符非空(a,'-'));}
};

元<符 C,整 I>構 重複分{
    極 分開(串&a){靜 串 e=重複(C,I);中 a==e;}
};

//等等,類似政策      

這裡面,就可以隻用​

​政策類​

​​與​

​基類​

​​進行組合,來達到​

​實作​

​​功能的目的.而且​

​政策類​

​​還沒有限制,依然可以是​

​模闆​

​​.這比用​

​繼承​

​​友善多了.

如果是繼承,你要這樣:

元<類 T>構 分塊基:公 T{
    ...
}
構 前杠分:公 分塊基<前杠分>{//這樣
    極 分開(串&a){中(全為符非空(a,'-'));}
};      

繼續閱讀