近似的类,如何建立实例???(100分)

  • 主题发起人 lifepass
  • 开始时间
L

lifepass

Unregistered / Unconfirmed
GUEST, unregistred user!
新手请教,我对不同的设备建立类,他们之间有很部分相同的属性,和方法,如何在程序中动态建立类的实例.根据应用不同我的实例只有一个,这样能保证建立的是我想要的.
比如,类,A ,B;,应用中条件的不同建立A的实例或者B的实例.
A *a;
B *b;
IF(X>1) a=NEW A;
else
b=NEW B;
感觉这样没有发挥出特性来,如果类多的话,那不是要建立很多的if了,
请教高手这样的问题如何解决??
 
采用继承就解决了,
所有都是Tmachine;
其他就继承Tmachine。
 
还想请教 以下这样的想法可以实现吗?还是想法就是幼稚的?
A *a;
IF(X>1) a=NEW A;
else
a=NEW B;
因为我想建立一个实例,根据选择的设备不同这个实例可以指向不同的类.
谢谢了
 
如果类TB继承自TA,那么下面的写法是合法(而且相当规范)的:
function MyCreateObj(X:Integer):TA;
begin
if X>1 then
Result:=TA.Create
else
Result:=TB.Create;
end;

不过,还有一句话——等你设计的OO代码越来越多之后就会发现:如果一定要继承的话,
最好让具体类继承自一个虚类(包含有abstract方法的类,或者,至少是一个包含virtual
方法的类),例如Delphi中的TStrings和TStringList。 :)
 
多人接受答案了。
 
顶部