返回接口比返回类有什么好处?

2020-10-12 08:48发布

看到很多项目里都是用接口代替具体类,这样有什么好处?
举例比如:
接口
public interface IDemo
{
string Name { get; set; }

    int ID { get; set; }
}

具体类

public class ADemo:IDemo
{
public string Name { get; set; }

    public int ID { get; set; }
}

返回 却用接口
public static IDemo Get(String A,int B)

这个是开源项目中的代码

 /// <summary>
    /// 获取实体信息
    /// </summary>
    /// <returns></returns>
    public static IEntityDescriptor Get(Type entityType)
    {
        var entity = List.FirstOrDefault(m => m.EntityType == entityType);
        if (entity == null)
        {
            throw new ArgumentNullException(nameof(entityType), "实体不存在");
        }

        return entity;
    }

为啥要这样做?

标签: c#
5条回答
贼婆χ
2楼-- · 2020-10-12 08:57

只关心可以干什么,而不关心具体怎么实现。比如以后内部实现变了,返回的具体实现也变了,但是在调用的地方不用做任何改动

查看更多
ら.Afraid
3楼-- · 2020-10-12 09:02

好处坏处是相对的,比如dynamic,好处是没有约束灵活,坏处就是灵活带来的排除难,管理没有约束。

所以你按照这方面想就行了。

查看更多
走好不送
4楼-- · 2020-10-12 09:09

这不是一种最好的设计方式,最好的设计方式是:返回值越小越好(越具体越好),参数越大越好(越抽象越好)。

查看更多
爷、活的狠高调
5楼-- · 2020-10-12 09:16

就是方便替换类,其他没任何好处。

查看更多
登录 后发表回答