如果我有各种分门别类,而且根据这些子类的情况算法,如果算法的行为略有不同,则最常用的面向目标的方法就是使用虚拟方法。
例如,如果子类别为DOM节点,如果算法是插入儿童节点,则算法有所不同,取决于母子的代谢成分(可能有子女)还是多功能文本(可以有笔):因此,<条码>内插入的代谢/编码方法可能在<条码>中成为虚拟(或抽象的)
另一种可能性是,给予共同财产,其价值可读:例如,算法可读到<代码>node。 <代码>DomNode基类类别中的 财产;或例如,你可能拥有不同类型的网络包装,共用一个共同包装头,并且可以读到包装头,看它究竟是哪一种包装。
我用了多少时间类型的信息,包括:
- The
is
andas
keywords in C# - Downcasting
- The Object.GetType method in dot net
- The
typeid
operator in C++
当Im加上新的算法,取决于子类的类型时,我倾向于在班级等级中增加新的虚拟方法。
我的问题是,何时使用常年类型的信息而不是虚拟功能?