110,525
社区成员
发帖
与我相关
我的任务
分享
if (d is A)
{
(d as A).Fa();
}
D d;
switch (X)
{
case 1: d=new A(); break;
case 2: d=new B(); break;
default: d=new C(); break;
}
d.Fd(); // OK,此时将调用A中重载的Fd()方法
d.Fa(); // Error,因为D中没有定义Fa()方法
if (d is A)
{
(d as A).Fa();
}
D d;
switch (X)
{
case 1: d=new A(); break;
case 2: d=new B(); break;
default: d=new C(); break;
}
return d;
public class person{ //基类
public person(){
}
}
public class man :person //继承类
{
public man(){
}
}
public class women:person{ //继承类
}
public class factory{ //工厂
private bool sex=true;
public bool Sex{
get{return sex;}
set{sex=value;}
}
public factory(){
}
public person getInstance(){
if(sex){
return new man();
}
else{
return new women();
}
}
}
public class Test(){ //调用
public Test(){
factory f=new factory();
f.sex= true;
person p=f.getInstance();
}
}
public interface IAVDevice
{
IAudio GetAudio();
IVideo GetVideo();
}
public interface IVideo
{
string GetPictureQuality();
}
public interface IAudio
{
string GetSoundQuality();
}
class CCd:IAVDevice
{
public IAudio GetAudio()
{
return new CCdAudio();
}
public IVideo GetVideo()
{
return new CCdVideo();
}
}
class CDvd:IAVDevice
{
public IAudio GetAudio()
{
return new CDvdAudio();
}
public IVideo GetVideo()
{
return new CDvdVideo();
}
}
class CCdAudio:IAudio
{
public string GetSoundQuality()
{
return "CD Audio is better then DVD Audio";
}
}
class CCdVideo:IVideo
{
public string GetPictureQuality()
{
return "CD video quality is not as good as DVD";
}
}
class CDvdAudio:IAudio
{
public string GetSoundQuality()
{
return "DVD Audio is not as good as CD Audio";
}
}
class CDvdVideo:IVideo
{
public string GetPictureQuality()
{
return "DVD video quality is better then CD";
}
}
class CAVMaker
{
public IAVDevice AVMake(string xWhat)
{
switch (xWhat.ToLower())
{
case "cd":
return new CCd();
case "dvd":
return new CDvd();
default:
return new CCd();
}
}
}
public class AbstractFactory
{
static void Main(string[] args)
{
CAVMaker objFactMaker = new CAVMaker();
IAVDevice objFact;
IAudio objAudio;
IVideo objVideo;
string strWhat;
strWhat = args[0];
objFact = objFactMaker.AVMake(strWhat);
objAudio = objFact.GetAudio();
objVideo = objFact.GetVideo();
Console.WriteLine(objAudio.GetSoundQuality());
Console.WriteLine(objVideo.GetPictureQuality());
}
}