Saya sedang mengerjakan tutorial Ray Wenderlich dan memperhatikan bahwa penulis menggunakan ekstensi kelas untuk menahan panggilan balik delegasi daripada meminta mereka ditangani di dalam kelas itu sendiri yaitu:
delegasikan panggilan balik di dalam ekstensi kelas:
extension LogsViewController : UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
...
}
}
sebagai lawan memilikinya terkandung di dalam kelas:
delegasikan panggilan balik di dalam kelas:
class LogsViewController : UITableViewController, UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
...
}
}
Saya menemukan ini aneh dan menarik pada saat bersamaan. Dia memiliki file yang didedikasikan hanya untuk ekstensi pada kelas LogsViewController bernama "LogsViewControllerExtension.swift" dan memiliki ekstensi yang berbeda untuk setiap protokol delegasi: UITableViewDataSource, UISplitViewDelegate, dll yaitu:
beberapa ekstensi kelas masing-masing dengan panggilan balik delegasi di dalam file sendiri:
extension LogsViewController: UISplitViewControllerDelegate {
... callbacks
}
extension LogsViewController : UIPopoverPresentationControllerDelegate {
... callbacks
}
Mengapa?
Apa manfaatnya melakukan ini? Saya bisa melihat di mana itu mungkin sedikit lebih mudah dibaca untuk memisahkan ini tetapi pada saat yang sama itu adalah tingkat tipuan. Apakah ada prinsip-prinsip OO yang mendukung atau menentang melakukan ini?