看到很多项目里都是用接口代替具体类,这样有什么好处?
举例比如:
接口
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;
}
为啥要这样做?
就是方便替换类,其他没任何好处。
好处坏处是相对的,比如dynamic,好处是没有约束灵活,坏处就是灵活带来的排除难,管理没有约束。
所以你按照这方面想就行了。
只关心可以干什么,而不关心具体怎么实现。比如以后内部实现变了,返回的具体实现也变了,但是在调用的地方不用做任何改动
这不是一种最好的设计方式,最好的设计方式是:返回值越小越好(越具体越好),参数越大越好(越抽象越好)。
建议改进一下排版,支持 markdown 语法
– dudu 4年前