84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
用的C#;比如有个abstract class叫item,其他两个类classA和classB都继承item;使用工厂模式创建一个对象,新建的这个对象是item类,我能通过obj.getType().Name方法判断这个类实际上是classA还是classB;在我知道这个类实际上是classA还是classB之后,如果想使用classA或者classB他们自己的方法,我应该怎么办?刚开始接触设计模式这些知识,还希望各位给一些建议!
面向对象的特性是 抽象 封装 继承 多态
如果A和B有完全不同且和item无关的方法 应该使用接口实现
abstract class item { } interface IclassA { void a(); } interface IclassB { void b();} class classA : item, IclassA { public void a() { throw new NotImplementedException(); } } class classB : item, IclassB { public void b() { throw new NotImplementedException(); } } item item = new classA(); if (item is IclassA) { var itemA = item as IclassA; itemA.a(); }
面向对象的特性是 抽象 封装 继承 多态
如果A和B有完全不同且和item无关的方法 应该使用接口实现