2013-12-05 6 views
3

Я просто нахожусь на форуме о каскаде. Вопрос заключался в том, что каскадирует в poo. Я попытался найти ответ Google, а также попытался найти другие потоки stackoverflow, если бы я не смог. Я просто нахожу эту ссылку http://en.wikipedia.org/wiki/Method_cascadingКакая разница между каскадом и цепочкой

Я знаю, что такое цепочка, я использовал его, большинство из javascript, jquery и других языков, но я не понимаю разницы между цепочкой и каскадом. Кто-нибудь может мне помочь? Или кто-нибудь может предоставить некоторые полезные ссылки относительно этого?

+2

вы имели в виду 'oop'? –

+1

https://en.wikipedia.org/wiki/Method_cascading#Comparison_with_method_chaining –

+0

Да, я имею в виду oop, извините – dan89

ответ

1

Определение довольно ясно на странице Википедии вы связаны:

Учитывая метод называют абы(), после выполнения вызова метода каскадные оценивают это выражение в левый объект а (с его новым значением , если они мутированы), тогда как цепочка методов оценивает это выражение в нужном объекте.

Это означает, что, a.b() возвращает мутантный a экземпляра с помощью метода каскадного. a.b() возвращает что-то отличное от b() с помощью метода chaining.

Таким образом, это метод каскадных:

class YourClass { 
    public YourClass b() { 
     // do stuff 
     return this; 
    } 

    public YourClass c() { 
     // do stuff 
     return this; 
    } 
} 

..which позволяет: yourClass.b().c();.

..И это метод цепочки:

class YourClass { 
    public SomeOtherObject b() { 
     // do stuff 
     return new SomeOtherObject(this); 
    } 
} 

class SomeOtherObject { 
    private YourClass _owner; 

    public SomeOtherObject(YourClass owner) { 
     _owner = owner; 
    } 

    public void c_onOtherObject() { 
    } 
} 

..which позволяет: yourClass.b().c_onOtherObject();.

EDIT: Я откатил свое предыдущее редактирование. Похоже, что это правильно, и условия не перевернуты неправильно.

4

Цепочка - это то, где вы возвращаете результат вызова метода, который будет использоваться при следующем вызове.

C#

Enumerable.Range(0,10).Skip(1).Aggregate(myList.First(),(result,listItem) => result += listItem)); 
//results in 45 being returned 

каскадных могут быть реализованы с помощью цепочки, когда this возвращается (что иногда сложно провести различие между этими двумя). jQuery делает это.

JQuery

$("#myId").css("background-color","blue").fadeIn().fadeOut(); 
//results in $("#myId") being returned 
+2

Ммм .. у нас, похоже, есть перевернутые определения. Я читал эту статью в Википедии по-разному. Я лично всегда называл это «цепочкой». –

+0

@KevinB Я имел в виду статью Википедии. Я думаю, что «каскадирование» звучит скорее как переход по иерархии. Это означает, что статья Википедии неверна. И Тревис прав. –

+0

Я согласен, что это выглядит немного ... –

Смежные вопросы