gpt4 book ai didi

c# - 在存储库模式中使用接口(interface)优于抽象类的优势?

转载 作者:可可西里 更新时间:2023-11-01 07:45:28 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Interface vs Base class

使用接口(interface)实现的存储库模式很常见

public interface IFooRepository
{
Foo GetFoo(int ID);
}

public class SQLFooRepository : IFooRepository
{
// Call DB and get a foo
public Foo GetFoo(int ID) {}
}

public class TestFooRepository : IFooRepository
{
// Get foo from in-memory store for testing
public Foo GetFoo(int ID) {}
}

但是您同样可以使用抽象类来做到这一点。

public abstract class FooRepositoryBase
{
public abstract Foo GetFoo(int ID);
}

public class SQLFooRepository : FooRepositoryBase
{
// Call DB and get a foo
public override Foo GetFoo(int ID); {}
}

public class TestFooRepository : FooRepositoryBase
{
// Get foo from in-memory store for testing
public override Foo GetFoo(int ID); {}
}

在存储库场景中使用接口(interface)优于抽象类的具体优势是什么?

(即不要只告诉我您可以实现多个接口(interface),我已经知道这一点 - 为什么要在存储库实现中这样做)

编辑以澄清 - 像“MSDN - Choosing Between Classes and Interfaces”这样的页面可以解释为“选择类而不是接口(interface),除非有充分的理由不这样做” - 中的好的理由是什么Repository 模式的具体案例

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com