接口与类实现分开放在不同的项目中?

11 浏览
0 Comments

接口与类实现分开放在不同的项目中?

我们正在进行一个中等规模的项目(3个开发者超过6个月),需要做出以下决策:我们希望将接口与具体实现分开。第一步是将接口存储在单独的文件中。

我们希望能更进一步,进一步分离数据:我们希望将接口放在一个.CS文件中的一个项目(CSPROJ),并在另一个.CS文件中放置帮助类(例如在该接口内部使用的一些公共类,一些枚举等)。然后,我们希望有另一个项目(CSPROJ),其中包含工厂模式、具体接口实现和其他“工作”类。

任何想要创建实现此接口的对象的类都必须包含包含接口和公共类的第一个项目,而不是实现本身。

这种解决方案有一个很大的缺点:它将组件的数量乘以2,因为每个“正常”项目都会有一个包含接口的项目和一个包含实现的项目。

您会推荐什么?您认为将所有接口放在一个单独的项目中而不是一个接口在自己的项目中是个好主意吗?

0
0 Comments

在软件开发过程中,我们经常会遇到将接口与类的实现分离的需求。这种需求的出现是因为我们需要在多个项目、可执行文件和/或服务之间共享接口。为了更好地管理这些接口,我们可以将它们放在一个独立的程序集中。

然而,我们也需要考虑接口是否属于项目的“公共接口”。如果只是为了方便内部使用,我们可以选择将接口与实现放在同一个程序集中,从而将程序集的数量保持相对较低。

需要注意的是,上述讨论仅适用于公共接口。私有接口(如果有的话)应该包含在与实现本身相同的项目中。

总之,根据我们的需求和项目的特点,我们可以将接口与实现分离或保持在同一个程序集中。这取决于接口是否需要在多个项目之间共享以及我们是否希望将程序集数量控制在较低水平。

代码示例:

// 接口的定义
public interface IMyInterface
{
    void MyMethod();
}
// 实现接口的类
public class MyClass : IMyInterface
{
    public void MyMethod()
    {
        // 实现接口的方法逻辑
    }
}

通过将接口与实现分离,我们可以更好地组织和管理项目中的代码,并促进代码的重用和维护。

0
0 Comments

将接口与类的实现分离在单独的项目中的原因是为了能够在客户端代码中访问服务器功能。我们使用远程调用(Remoting)来访问服务器功能,因此服务器上的远程对象需要实现接口,并且客户端代码需要访问这些接口以使用远程对象。

将接口放在单独的项目中可以更加松散地耦合代码,因此可以采取这种方法。拥有两个程序集并不是一个问题,对吧?

另外,将接口放在单独的程序集中还有一个好处,就是如果有一些接口足够通用,可以在多个项目中重用。

所以,将接口与类的实现分离在单独的项目中是一个很好的做法。以下是实现的代码示例:

// 在单独的项目中定义接口
public interface IRemoteObject
{
    void DoSomething();
}
// 在另一个项目中实现接口
public class RemoteObject : MarshalByRefObject, IRemoteObject
{
    public void DoSomething()
    {
        // 实现具体的功能
    }
}
// 在客户端代码中使用远程对象
public class Client
{
    public void UseRemoteObject(IRemoteObject remoteObject)
    {
        remoteObject.DoSomething();
    }
}

通过将接口与类的实现分离在单独的项目中,我们可以更好地管理代码,并且能够在不同的项目中重用接口。这使得我们的代码更加松散耦合,并且更易于维护和扩展。所以,将接口与类的实现分离在单独的项目中是一个很好的做法。

0
0 Comments

问题的原因:

在这段内容中,讨论了接口的分类,并提到了将接口与类的实现分离的问题。根据的观点,有一些接口是独立的,可以在不涉及项目的其他部分的情况下描述其目的。这些接口应该放在一个单独的“接口程序集”中,并且可能被项目中的所有其他程序集引用。另一些接口与项目的类紧密耦合,只有在类的上下文中才有意义。这些接口应该与它们所耦合的类放在同一个程序集中。认为,隐藏所有东西背后的接口是一个错误,有一些与类的耦合是可以接受的。

解决方法:

根据的观点,将接口与类的实现分离的解决方法是将独立的接口放在一个单独的“接口程序集”中,并将与项目的类紧密耦合的接口放在同一个程序集中。这样可以将项目的基础设施类型与领域特定类型分开,并且在必要时可以将某些具体实现隔离到单独的程序集中。

以下是根据上述内容整理的文章:

在软件开发中,接口是一种常见的编程概念。在某些情况下,将接口与类的实现分离可能是一个好的设计选择。那么,为什么需要将接口与类的实现分离?有什么解决方法呢?

根据的观点,接口可以分为独立的接口和与类紧密耦合的接口。独立的接口是那些在不涉及项目的其他部分的情况下可以描述其目的的接口。这些接口应该放在一个单独的“接口程序集”中,并且可能被项目中的所有其他程序集引用。而与类紧密耦合的接口只有在类的上下文中才有意义,它们应该与类放在同一个程序集中。

在实际项目中,有一些基础设施类型,比如ILogger、IFileSystem等,这些类型应该被放在与领域特定类型不同的程序集中,以便将基础设施与业务逻辑分开。但是,除非有特定的原因,否则应该将这些基础设施的接口与具体的实现放在同一个程序集中。

需要注意的是,将所有东西都隐藏在接口背后是一个错误的做法。在某些情况下,直接使用类而不是通过接口进行依赖注入或工厂创建可能是可以接受的。

将接口与类的实现分离是一个值得考虑的设计选择。通过将独立的接口放在单独的程序集中,可以实现对项目的其他部分的解耦。同时,将与类紧密耦合的接口放在同一个程序集中,可以更好地组织代码结构。然而,需要注意的是,并不是所有东西都应该隐藏在接口背后,有些与类的耦合是可以接受的。

以上就是将接口与类的实现分离的问题的原因以及解决方法的整理。在实际项目中,开发人员可以根据具体情况来决定是否将接口与类的实现分离,并选择合适的方法来组织代码结构。

0