簡體   English   中英

在 dart 中使用多態性重構條件

[英]Refactoring conditionals with polymorphism in dart

我最近在學習 Dart Apprentice 時遇到了這個問題的標題,但是我找不到與 dart 語言相關的任何內容。 我了解條件是如何工作的,雖然我對 OOP 有相當了解,但我了解多態性是如何工作的。 但是我看不到條件和多態之間的關系,或者如何用多態替換條件。 誰能幫忙澄清一下?

我最好的猜測是這樣的條件序列:

void doSomething(CommonSuperClass o) {
  if (o is Foo) {
    doSomethingFoo(o);
  } else if (o is Bar) {
    doSomethingBar(o);
  } else if (o is Baz) {
    doSomethingBaz(o);
  } else {
    throw UnsupportedError("Wat?");
  }
}

通過向CommonSuperClass接口添加doSomething方法來更好地實現,並讓每個子類實現自己的功能,因此Foo具有void doSomething() { doSomethingFoo(this); } void doSomething() { doSomethingFoo(this); } ,同樣適用於BarBaz

這意味着使用虛擬方法調用功能進行動態調度,而不是使用is測試手動進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM