- Beranda
- Programmer Forum
[JAVA] Design Pattern - Behaviour - Strategy
...
TS
system69
[JAVA] Design Pattern - Behaviour - Strategy
Strategy Pattern menurut gue ibarat mesin bor yang mata bor nya bisa kita gonta ganti sesuai kebutuhan
Misal kita lagi buat program game RPG. Kita buat sebuah class CharacterObject sebagai Karakter yang mempunyai property name dan method attack().
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()
Kita buat program utamanya
Program game di atas selesai dibuat tapi ada beberapa permasalahan :
Disinilah fungsi Strategy pattern berperan. Pertama kita buat interface untuk attack. Lalu kita buatkan class untuk masing2 senjata dengan mengimplementasikan interface attack tersebut
Kita lakukan sedikit perubahan pada class CharacterObject
Lalu kita lakukan perubahan pada job class yang kita buat. Perhatikan method attack() yang selalu di override hilang.
kita coba jalankan di program utama
Kesimpulan :
Silahkan di BOOKMARK (CTRL+D) gan buat referensi
Bisa diterapkan pake bahasa lain yang support OOP
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
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
Programmer Forum
20.2KThread•4.5KAnggota
Urutkan
Terlama
Komentar yang asik ya