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; }
推薦閱讀
- HornetQ Messaging Developer’s Guide
- Google Flutter Mobile Development Quick Start Guide
- Mastering Entity Framework Core 2.0
- 精通Nginx(第2版)
- 一步一步學Spring Boot 2:微服務項目實戰(zhàn)
- MySQL 8從入門到精通(視頻教學版)
- 深入分布式緩存:從原理到實踐
- UVM實戰(zhàn)
- IBM Cognos Business Intelligence 10.1 Dashboarding cookbook
- Odoo 10 Implementation Cookbook
- Building Serverless Web Applications
- GitHub入門與實踐
- Qlik Sense? Cookbook
- Hadoop 2.X HDFS源碼剖析
- Flink技術內(nèi)幕:架構設計與實現(xiàn)原理