Kaskus

Tech

Pengaturan

Mode Malambeta
Gambar

Lainnya

Tentang KASKUS

Pusat Bantuan

Hubungi Kami

KASKUS Plus

© 2024 KASKUS, PT Darta Media Indonesia. All rights reserved

system69Avatar border
TS
system69
[JAVA] Design Pattern - Behaviour - Strategy
Strategy Pattern menurut gue ibarat mesin bor yang mata bor nya bisa kita gonta ganti sesuai kebutuhan
Spoiler for Deskripsi Resmi:


Misal kita lagi buat program game RPG. Kita buat sebuah class CharacterObject sebagai Karakter yang mempunyai property name dan method attack().
Spoiler for Class CharaterObject:

di dalam game yang kita buat akan ada Karakter tipe :
Wizard -> menyerang dengan sihir
Knight -> menyerang dengan pedang
Ranger -> menyerang dengan panah
Gunner -> menyerang dengan pistol
Assassin -> menyerang dengan pisau

tentunya kita akan buat kelas baru turunan dari class CharacterObject dengan meng-override method attack()
Spoiler for Class Wizard-Knight-Ranger-Gunner-Assasin:


Kita buat program utamanya
Spoiler for Class Game:


Program game di atas selesai dibuat tapi ada beberapa permasalahan :
  • setiap job class player turunan CharacterObject pasti meng-override method attack. dan ketika kita akan menambahkan job class player baru maka kita harus meng-override method attack
  • bagaimana kalo setiap player bisa memakai senjata apa saja atau berganti job class?


Disinilah fungsi Strategy pattern berperan. Pertama kita buat interface untuk attack. Lalu kita buatkan class untuk masing2 senjata dengan mengimplementasikan interface attack tersebut

Spoiler for Refactoring:


Kita lakukan sedikit perubahan pada class CharacterObject
Spoiler for Class CharacterObject baru:


Lalu kita lakukan perubahan pada job class yang kita buat. Perhatikan method attack() yang selalu di override hilang.

Spoiler for Refactor:


kita coba jalankan di program utama

Spoiler for New Class Game:


Kesimpulan :
  • kita bisa menghilangkan duplikasi override pada setiap job class
  • penambahan job class baru seperti Paladin tidak harus mengoverride method attack dan dapat menggunakan senjata apa saja
    Code:

    public class Paladin extends CharacterObject {
    public Paladin(String name){
    // property nama otomatis diturunkan dari CharacterObject
    this.setName(name);
    }
    }

  • Dengan Strategy Pattern kita dapat membuat suatu fungsi yang bisa kita copot dan pasang pada suatu object.


Spoiler for Buat yang lebih pahamUML:



Silahkan di BOOKMARK (CTRL+D) gan buat referensi
Bisa diterapkan pake bahasa lain yang support OOP
0
3.2K
24
GuestAvatar border
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
Programmer Forum
Programmer Forum
KASKUS Official
20.2KThread4.5KAnggota
Urutkan
Terlama
GuestAvatar border
Komentar yang asik ya
Ikuti KASKUS di
© 2024 KASKUS, PT Darta Media Indonesia. All rights reserved.