网站建设有哪些模块,江门网站平台建设,备案域名出售,seo优化一般包括哪些内容()。一、继承的应用场景
在上篇文章分析了继承的应用#xff0c;本文反过来讲继承和实例。可以理解对上文的继承进行一下基础知识的铺垫#xff0c;继承的应用场景非常多#xff0c;典型的应用场景包括#xff1a; 1、单纯属性的继承 这种继承非常常见#xff0c;在前面也举过…一、继承的应用场景
在上篇文章分析了继承的应用本文反过来讲继承和实例。可以理解对上文的继承进行一下基础知识的铺垫继承的应用场景非常多典型的应用场景包括 1、单纯属性的继承 这种继承非常常见在前面也举过类似的例子比如公司开发一款硬件产品其通信协议为一个类Protocol,其中有二十个属性。过了一年公司生产了新的升级产品多提供了几项功能的监测体现为增加了十几个属性。那么此时就可以使用继承类Protocol的方式来进行新硬件的协议的开发。既兼容老的硬件产品又减少了新硬件产品开发的复杂度。 2、行为的继承 同理比如开发了一个监控软件当监控到某个现象或某个开关被触发时就报不同的警告并发送短信或通知消息等。当此监控软件升级后可能增加一些诸如天气、扬尘等的监控那么只需要继承原有的事件类就可以继续在此基础上开发新的功能。
3、混合继承 这个就比较好理解了可能我们的设备既需要硬件的数据属性的增加又需要事件或消息的通信而实际上这种情况更为多见所以把二者统一继承下来即可。
仅使用继承的程序一般都是相对简单的场景更多是在继承的基础上使用多态。后面会更详细的分析一下多态的设计应用。所以继承的单一应用一般都不会涉及到过多的复杂情况。如果涉及璚这种情况大多数情况都是继承仅仅在其中起到了一个很小的作用。这点大家要明白继承只是一个基础更多的丰富应用是在此基础上展开的。
二、实际的例子
来看一个测量电力设备的协议处理
struct w5a{
float I1;
float I2;
float I3;
float U0;
float U1;
float U3;
float S;
float P;
float Q;
};
struct w2k:public w5a{
double factor;
int type;
};再看一个大桥监控的例子
class monitor{
public:void sendBridgeTilt(Event* e,int type );void sendBridgeAltimeter(Event*e,int type);void sendMsg(int type,double d);
protected:double angle_;
};
class bj_monitor:public monitor{
public:void sendTrafficAccident(Event*e);void sendTrafficFlow(Event*e);
protected:double height_;
};以大桥的监控为例可能早期的大桥只控制大桥的高、倾斜等后期可能为增加交通流量、事故处理等等。这种小而专的场景下单纯继承的应用还是非常多的。另外一个非常多的情况是电力系统的仪表监控记得类得继承很深原因就是一个设备往往衍生出几个甚至十几个升级版。如果开发者遇到这种情况就可以非常清晰明白单纯继承的作用。
三、分析说明
大家有没有看到上面的例子它体现在一些专有场景上的应用能更清晰的看清楚继承的应用或者说这种场景更典型的举出了继承的例子。而一些中大型的软件上继承其实很难单纯的体现在学习者的眼前它一定混合着不同的情况的应用这样就让一些新手有些措手不及。 正如学习一个知识由简入深循序渐进才能更容易的理解和掌握这个知识然后再加以应用从中吸取经验教训如此反复则可以迅速的真正的理解这门知识。
四、总结
设计的学习难度说大很大说小很小关键看开发者的知识驾驭程度和水平。条条大路通罗马但有没有捷径这种捷径是否适合每个开发者是不是有更适合具体到某一个人的捷径这就需要每一个开发者和设计者不断的探索。 总体而言多学习理论知识多写代码多看优秀的开源代码和框架多和优秀的设计者进行有效的交流。在此基础上不断的思考和实践对大多数开发者来说是一条不错的提升之路