[英]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); }
,同樣適用於Bar
和Baz
。
這意味着使用虛擬方法調用功能進行動態調度,而不是使用is
測試手動進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.