Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 定义空白接口及其含义_Oop_Architecture - Fatal编程技术网

Oop 定义空白接口及其含义

Oop 定义空白接口及其含义,oop,architecture,Oop,Architecture,我最近遇到一种情况,我希望将一组类传递到一个方法中(因此该方法将接口作为参数) 但是,接口下的类都有不同数量的方法,因此接口本身是空的 这说明了我的应用程序的设计有什么意义?在本例中,我打算使用一个抽象类,但我保留了接口,因此可能有什么东西阻止了我使用抽象类(不记得是什么) 语言:C#(尽管这与语言无关)。我要问的问题是,为什么需要将这些类的实例传递到方法中,为什么它只能是其中的一个 如果该方法可以对(例如,System.Object)执行完全相同的操作,那么它应该将一个对象作为参数。如果它要求

我最近遇到一种情况,我希望将一组类传递到一个方法中(因此该方法将接口作为参数)

但是,接口下的类都有不同数量的方法,因此接口本身是空的

这说明了我的应用程序的设计有什么意义?在本例中,我打算使用一个抽象类,但我保留了接口,因此可能有什么东西阻止了我使用抽象类(不记得是什么)


语言:C#(尽管这与语言无关)。

我要问的问题是,为什么需要将这些类的实例传递到方法中,为什么它只能是其中的一个


如果该方法可以对(例如,
System.Object
)执行完全相同的操作,那么它应该将一个对象作为参数。如果它要求传入的项具有某些特定的功能,那么该功能应该在接口中进行编码。

我要问的问题是,为什么需要将这些类的实例传入方法,以及为什么它只能是其中的一个


如果该方法可以对(例如,
System.Object
)执行完全相同的操作,那么它应该将一个对象作为参数。如果它要求传入的项具有某些特定功能,那么该功能应该在接口中进行编码。

您所描述的是“标记接口”


与任何设计模式一样,只要它是手头任务的正确模式,就没有本质上的好坏之分。

您所描述的是“标记接口”

与任何设计模式一样,只要它是手头任务的正确模式,就没有本质上的好或坏

这说明了我的应用程序的设计吗

也许它说你需要多想一想某些责任到底在哪里?记住(LSP):子类型必须可以替换其基类型。我也会记住(SRP)。但最重要的是保持简单

我经常发现,只有当我把这样的东西放在一起并使用了一段时间后(从不同的角度和在不同的使用情况下),事情才开始变得清晰起来。因此,它可能会说,你有一些想法,但它还不清楚如何最好地做到这一点-这很酷;让某些东西工作起来,然后在准备好后重构

这说明了我的应用程序的设计吗

也许它说你需要多想一想某些责任到底在哪里?记住(LSP):子类型必须可以替换其基类型。我也会记住(SRP)。但最重要的是保持简单


我经常发现,只有当我把这样的东西放在一起并使用了一段时间后(从不同的角度和在不同的使用情况下),事情才开始变得清晰起来。因此,它可能会说,你有一些想法,但它还不清楚如何最好地做到这一点-这很酷;让某些东西工作起来,然后在准备好后重构。

为什么不让该方法接受泛型而不是基类?可能需要将不同的类传递到方法中的原因是,这些类都实现了类似的功能,但有不同的功能/方法。在本例中,您可以在这些类上实现一些包装器,这些类实现抽象(非空)接口。这样做的好处是,您的客户端代码变得更干净,并且独立于类。为什么不让该方法接受泛型而不是基类呢?可能您需要将不同的类传递到方法中的原因是,这些类都实现了类似的功能,但有不同的功能/方法。在本例中,您可以在这些类上实现一些包装器,这些类实现抽象(非空)接口。这样做的好处是,您的客户机代码变得更干净,并且独立于类。