什么是具体实施?

NLV*_*NLV 17 .net wcf

我在StackOverflow和其他地方看到了很多关于具体实现的帖子.在摆弄WCF时我来到了这条线

将您的服务实现或任何"基于服务"的类与具体实现联系起来绝不是一个好主意.

谁能解释一下具体实施是什么?

Inc*_*ito 12

它是抽象(抽象类,接口)的实现.请注意,您只能实例化具体类的对象.

例如,如果你有:

abstract class AbstractClass
{
    .......
   // Here you have some abstract methods 
}

class ConcreteClass : AbstractClass
{
.......
}
Run Code Online (Sandbox Code Playgroud)

在WCF的情况下,它想说尽管允许使用ServiceContract属性更好地标记类以使其在单独的接口上并在具有ServiceBehavior属性的具体类中实现该接口.

像这样 :

[ServiceContract(Namespace = "MyNamespaceName")]
interface IMyInterface
{
    [OperationContract]
    int SomeMethod(.....);

   ......    
   ......    
}

[ServiceBehavior(......)]
public class SomethingConcrete : IMyInterface
{
    // implementation of SomeMethod
}
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 9

如果您有接口或抽象类,则需要实现它.

实现此类接口或类的类称为具体实现(因为只能实例化此类实现的类).

声明的原则意味着您不应该直接对具体实现进行编码,因为您可能希望稍后将其交换为另一个具体实现,而无需更改代码.这意味着您应该使用接口和抽象类引用而不是具体实现.


Guf*_*ffa 5

在术语“具体实现”中,单词“具体”是多余的。一个实现总是具体的,没有抽象的实现。因此,重要的只是术语“实现”。

在这种情况下,这意味着您应该针对抽象进行编码,而不是直接针对实现进行编码,即,为类必须支持的内容定义一个接口,并使用该接口代替类。这样,您可以用一个实现替代另一个实现,只要它们实现了接口即可。

  • 实现接口的抽象类将被视为零实现,还是一半实现? (2认同)