我在StackOverflow和其他地方看到了很多关于具体实现的帖子。在摆弄WCF的同时,我走过了这条线
联系您的服务实施,或 任何“基于服务”的课程 具体实施从来都不是 好主意。
任何人都可以解释具体实施是什么吗?
答案 0 :(得分:12)
它是抽象(抽象类,接口)的实现。 请注意,您只能实例化具体类的对象。
例如,如果你有:
abstract class AbstractClass
{
.......
// Here you have some abstract methods
}
class ConcreteClass : AbstractClass
{
.......
}
对于WCF,它想说虽然允许使用ServiceContract属性标记类更好,以便将它放在单独的接口上,并在标有ServiceBehavior属性的具体类中实现该接口。
像这样:
[ServiceContract(Namespace = "MyNamespaceName")]
interface IMyInterface
{
[OperationContract]
int SomeMethod(.....);
......
......
}
[ServiceBehavior(......)]
public class SomethingConcrete : IMyInterface
{
// implementation of SomeMethod
}
答案 1 :(得分:9)
如果您有接口或抽象类,则需要实现它。
实现这样的接口或类的类称为具体实现(因为只能实例化这样一个实现的类)。
所述原则意味着您不应直接对具体实现进行编码,因为您可能希望稍后将其交换为另一个具体实现,而无需更改代码。这意味着您应该使用接口和抽象类引用而不是具体实现。
答案 2 :(得分:4)
在“具体实施”一词中,“具体”一词是多余的。实现总是具体的,没有抽象实现。所以,重要的只是术语“实施”。
在这种情况下,它意味着您应该针对抽象而不是直接针对实现进行编码,即您为类必须支持的内容定义接口,并使用接口而不是类。这样,只要实现接口,就可以将一个实现替换为另一个实现。
答案 3 :(得分:1)
我终于理解了Head First" Design Pattern"书。
非常简单的解释。
想象一下,有一个名为Animal的接口或抽象类,带有makeSound()方法。
想象一下,还有使用bark()和makeSound()方法的Dog类。
编程实现(具体实现)Dog类到Animal将是
Dog d = new Dog();
d.bark();
编程到接口/超类型Dog类到Animal将是
Animal animal = new Dog();
animal.makeSound();