官术网_书友最值得收藏!

1.3.2 程序應用

EIT造型遷移到編程實踐中,E是基類、I是接口、T是派生類,應用到1.1節(jié)的Car類的案例中,Car是E、SetDiffTire(string tire)是I、DZ是T,用UML類圖表示的EIT造型如圖1-10所示。

圖1-10說明了EIT造型的程序應用,基類Car是EIT造型中的E,基類中的虛方法SetDiffTire (string tire)是EIT造型中的I,派生類DZ是EIT造型中的T,派生類實現(xiàn)具體的SetDiffTire(string tire)(接口I)。

▲圖1-10 EIT造型的程序應用

圖1-10中,Car與DZ緊耦合,在軟件設計中可以繼續(xù)優(yōu)化,將Car與DZ分離(解耦),增加一個接口類SetTireInterface,在Car類中實現(xiàn)安裝不同輪胎的方法DiffTire();各個派生類繼承接口類,例如,DZInterface派生類繼承自接口類SetTireInterface,DZInterface派生類“安裝”符合自身應用需求的Tire,具體代碼如下。

//新增接口類
class SetTireInterface
{
    public:
        SetTireInterface(string tn):m_tireName(tn){}
        virtual string SetDiffTire() = 0;
    protected:
        string m_tireName;
};
//新增接口派生類
class DZInterface:public SetTireInterface
{
    public:
        DZInterface(string tn):SetTireInterface
        (tn){}
        string SetDiffTire()
        {
            return m_tireName;
        }    
};
//Car與DZ解耦
class Car
{
    public:
        Car(string en):engineName(en)
        {
            m_Interface = new DZInterface("miqilin");
        }
        void SetCommonEngine()
        {
            cout<<"commonEngine is: "<< engineName<<endl;
        }
        void DiffTire()
        {   
           
            cout<<m_Interface->SetDiffTire()<<endl;
        }
    protected:
        string engineName;
        SetTireInterface* m_Interface;
};
//客戶端主程序
int main()
{
    Car *car = new Car("weichai");
 
    car->SetCommonEngine();
    car->DiffTire();
    delete car;
}
主站蜘蛛池模板: 南康市| 景泰县| 大安市| 阜南县| 呼玛县| 榆中县| 东港市| 随州市| 林西县| 蚌埠市| 荔浦县| 达尔| 浦东新区| 晴隆县| 介休市| 明光市| 桦川县| 南城县| 孟津县| 县级市| 南丰县| 长治市| 桐城市| 昌黎县| 长白| 高雄市| 资阳市| 深圳市| 黑河市| 乐亭县| 济阳县| 武宁县| 温州市| 台北市| 和田市| 怀宁县| 亚东县| 怀宁县| 东安县| 晋城| 崇明县|