当前位置:  开发笔记 > 编程语言 > 正文

我如何实现这种类型的OOP结构?

如何解决《我如何实现这种类型的OOP结构?》经验,为你挑选了3个好方法。

我想构建一个很好的API(C#),让人们更容易消费,我想我以前见过这个并想知道如何做到这一点:

MyNamespace.Cars car = null;

if(someTestCondition)
       car = new Honda();
else    
       car = new Toyota();

car.Drive(40);

这可能吗?如果是这样,需要做什么?



1> Otávio Décio..:
Interface Car
{
void Drive(int miles);
}

class Honda : Car
{
...
}
class Toyota : Car
{
...
}



2> Steven Behnk..:

你可以用几种不同的方式做到这一点.您可以声明一个抽象基类,也可以使用对象实现的接口.我相信"C#"首选方法是拥有一个接口.就像是:

public interface ICar
{
    public Color Color { get; set; }

    void Drive(int speed);
    void Stop();

}

public class Honda : ICar
{

    #region ICar Members

    public Color Color { get; set; }

    public void Drive(int speed)
    {
        throw new NotImplementedException();
    }

    public void Stop()
    {
        throw new NotImplementedException();
    }

    #endregion
}

public class Toyota : ICar
{
    #region ICar Members

    public Color Color { get; set; }

    public void Drive(int speed)
    {
        throw new NotImplementedException();
    }

    public void Stop()
    {
        throw new NotImplementedException();
    }

    #endregion
}



3> Austin Salon..:

我看到每个人都在推动界面/抽象基类更改.您提供的伪代码或多或少意味着您已经实现了这一点.

我会做出别的东西:

您将需要创建一个"CarFactory",它将返回基类/接口的特定实现.Create方法可以将您的测试条件作为参数,以便您创建正确的汽车.

编辑:这是MSDN的链接 - http://msdn.microsoft.com/en-us/library/ms954600.aspx

编辑:请参阅其他链接的评论.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有