84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
用的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无关的方法 应该使用接口实现