Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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
Design patterns 设计原则_Design Patterns - Fatal编程技术网

Design patterns 设计原则

Design patterns 设计原则,design-patterns,Design Patterns,以下两个设计原则的区别是什么 编程到接口,而不是实现和 依赖抽象,不依赖具体类。 这两条原则说的是同一件事,但用的方式不同 接口是一个具体类的抽象,所以2。是1的子集。原则1。具有更广泛的适用性,您可以将其用于任何类型的接口,而不仅仅是面向对象编程中使用的接口。接口是一个具体类的抽象,因此2。是1的子集。原则1。具有更广泛的适用性,您可以将其用于任何类型的接口,而不仅仅是面向对象编程中使用的接口。他们基本上是用不同的词表达相同的内容 您应该编写类,使其依赖于抽象概念(如接口),而不是概念的具体实

以下两个设计原则的区别是什么

编程到接口,而不是实现和 依赖抽象,不依赖具体类。
这两条原则说的是同一件事,但用的方式不同

接口是一个具体类的抽象,所以2。是1的子集。原则1。具有更广泛的适用性,您可以将其用于任何类型的接口,而不仅仅是面向对象编程中使用的接口。

接口是一个具体类的抽象,因此2。是1的子集。原则1。具有更广泛的适用性,您可以将其用于任何类型的接口,而不仅仅是面向对象编程中使用的接口。

他们基本上是用不同的词表达相同的内容

您应该编写类,使其依赖于抽象概念(如接口),而不是概念的具体实现。这使您可以零碎地更改行为,而不必重新编写整个代码块

参见依赖性注射

例如:


他们基本上是用不同的语言说同一件事

您应该编写类,使其依赖于抽象概念(如接口),而不是概念的具体实现。这使您可以零碎地更改行为,而不必重新编写整个代码块

参见依赖性注射

例如:


接口只不过是提供了沟通不同类型实现的手段
抽象只是用一些抽象方法创建泛型类

接口只是提供了沟通不同类型实现的手段
抽象只是用一些抽象方法创建泛型类

在面向对象的世界中,这些术语经常交替使用。
接口只不过是抽象,实现只不过是具体的。

在面向对象的世界中,这些术语经常使用,并且可以互换。
接口只不过是抽象,实现只不过是具体。

这类问题对程序员来说会更好。stackexchange.com这类问题对程序员来说会更好。stackexchange.com如果这两个问题在不同的词中是相同的,那么为什么这两个问题在设计模式中是不同的原则呢?接口是抽象和具体类是一个实现。您应该编写易于抽象的代码,并且不应该依赖于代码中类的具体实现来允许在任何需要抽象的地方定义和使用实现。如果您不熟悉依赖性注入,那么我建议您对此进行研究,因为这是证明这些原则的一个重要原则,并且需要您引用的原则。如果两者在不同的词中是相同的,那么为什么这两个在设计模式中是不同的原则?接口是一种抽象,一个具体的类就是一个实现。您应该编写易于抽象的代码,并且不应该依赖于代码中类的具体实现来允许在任何需要抽象的地方定义和使用实现。如果你不熟悉依赖性注射,那么我建议你对此进行研究,因为这是证明这些的一个重要原则,需要你引用的原则。如果我们可以使用原则1,那么为什么会有原则2。“你不认为这会造成更多的混乱吗?”马亨德拉·阿瑟内里亚悲伤地说,这就是现实。许多人用不同的名字提及同一个概念。我希望每个概念都有一个GUID标签,并可以在数据库中搜索,但唉!如果我们可以使用原则1,那么为什么会有原则2。“你不认为这会造成更多的混乱吗?”马亨德拉·阿瑟内里亚悲伤地说,这就是现实。许多人用不同的名字提及同一个概念。我希望每个概念都有一个GUID标签,并可以在数据库中搜索,但唉!
public class Chef : IResturauntWorker 
{
    // This is an example of writing to an interface instead of an
    // an implementation.  Because the Chef class implements the 
    // IResturauntWorker interface, the chef can be swapped in with other
    // resturaunt workers like bussers or waiters.

    public void Chop(Carrot c)
    {
        // code to chop a carrot

        // this is an example of depending on an implementation
        // because Carrot is a concrete class, this method can 
        // only be used with a Carrot
    }

    public void Chop(IVegetable c)
    {
        // code to chop a Vegetable

        // this is an example of depending on an abstraction
        // because IVegetable is a abstraction of an idea 
        // (a vegetable, in this case), this method can be
        // used with any class that implements IVegetable,
        // including carrots, celery, onions, etc.
    }
}