Delegation, seperti yang dinyatakan oleh Merriam-Webster, adalah sebuah tindakan pemberdayaan  untuk tindakan yang lain dengan merepresentasikannya dalam bentuk sebuah kelompok (Merriam-Webster, n.d). Apple mendefinisikan bahwa delegasi adalah sebuah object yang bertindak sebagai dan berkoordinasi dengan object yang lain saat object bertemu dengan sebuah eventdalam sebuah program (Apple, n.d). Demikianlah, delegation dalam design pattern terlibat dengan inheritance manual melalui object composition(Best-Practice Software Engineering, n.d).Delegation dalamdesign pattern sendiri tidak berbeda jauh dengan arti general dari delegation.Inheritance berperilaku sama dengan cara, mempunyai sikap pemberdayaan terhadap pemberdayaan yang lain dengan bertindak sebagai representasi object yang lain. Di samping itu, object composition bertindak sebagai representasi kelompok. Pola dari delegation sering di gunakan dalam iOS dan OS X development per 2015, seperti yang di nyatakan oleh Bart Jacobs (Jacobs, 2015).

Problem:
Pola dari delegation digunakan saat metode coupling dalam classes butuh untuk dikurangi dan saat components yang bertindak sama harus diubah untuk keadaan masa depan(Best-Practice Software Engineering, n.d).

Solution:
Delegation bersikap sebagai sebuah alternatif untuk inheritance.Inheritance mendefinisikan hubuangan dekat antara parent dan child object dan juga coupling objects dengan dekat. Mengekspresikan hubungan antara classes melaluidelegation dinyatakan lebih fleksibel, karena classes-nya tidak coupled secara berdekatan dengan object-nya(Best-Practice Software Engineering, n.d).

Contoh dari sebuah delegation pattern (Best-Practice Software Engineering, n.d):

Berikut adalah sebuah interface, dibuat untuk delegation di atas.  Delegation dapat dipertukarkan sehingga mereka harus mengimplementasikan interface yang sama.

Berikut adalah sebuah class ‘cat’ yang menggunakan ‘MeowSound’ secaradefault:

Berikut adalah class ‘Main’ untuk menguji pola delegation :

Keuntungan dalam menggunakan delegation adalah (Jacobs, 2015):

  1. Pola dari delegation dapat digunakan kembali.
  2. Loose coupling dapat terjadi dalam delegation, membuat object graph menjadi fleksibel.
  3. Delegation memisah-misahkan tanggung jawab. Karena itu, membuat tanggung jawab setiap object lebih jelas.

REFERENCES:

Delegation. (n.d). In Merriam-Webster. Retrieved October 23, 2017, from https://www.merriam-webster.com/dictionary/delegation.

Best-Practice Software Engineering. (n.d).Delegation Pattern. Retrieved October 23, 2017, from http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/delegation.html

Jacobs, B. (2015, May 22). Design Patterns: Delegation. Retrieved from https://code.tutsplus.com/articles/design-patterns-delegation–cms-23901

Apple. (n.d).Delegates and Data Sources. Retrieved October 23, 2017, from https://developer.apple.com/library/content/documentation/General/Conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html

Penulis:
Wafa Aufiya – 1901509344
Ivana Lemmuela Salim – 1901487223

Lecturer:
Meilana – D4572