Singleton Pattern adalah pola desain yang memastikan hanya ada satu instance dari suatu kelas dan menyediakan akses global ke instance tersebut.
Pada program ini, PendataanPenjualan menggunakan Singleton Pattern untuk menyimpan daftar handphone yang dijual.

Dengan ini:
- Hanya ada satu objek yang menangani data penjualan.
- Mencegah duplikasi data saat program dijalankan.
- Memudahkan akses data ke daftar penjualan tanpa harus membuat banyak objek.
- ๐น
PendataanPenjualanโ Singleton yang mengelola data handphone yang terjual dan menghitung total penjualan. - ๐น
Handphoneโ Superclass dengan atribut umum untuk membuat objek handphone. - ๐น
iPhone,Samsung,Xiaomiโ Subclass Handphone dengan atribut khusus.
Admin (pengguna sistem)
- Admin dapat memasukkan informasi handphone yang terjual dan melihat semua daftar penjualan handphone yang telah diinput.
- Melihat total penjualan berdasarkan merek handphone dan total seluruh penjualan
** 1. Admin Memasukkan Data**
Admin menginputkan tanggal penjualan handphone. Sistem meminta detail handphone (merk, model, harga, dll.).
2๏ธ. Menyimpanan Data ke Singleton
Data handphone dikirim ke PendataanPenjualan (Singleton).
Singleton mengambil objek yang sudah dibuat pada kelas Handphone dan menyimpannya dalam daftar tunggal.
3๏ธ. Permintaan & Perhitungan Total Penjualan
Admin meminta daftar penjualan. Singleton menghitung total penjualan per merk dan keseluruhan.
4๏ธ. Menampilkan Laporan
Program utama menampilkan daftar handphone dan total penjualan. Admin dapat melihat hasil laporan penjualan.
Facade Pattern adalah pola desain yang menyediakan antarmuka tunggal untuk berinteraksi dengan sistem yang kompleks.
Dengan menggunakan Facade Pattern:
- Pengguna tidak perlu berinteraksi langsung dengan subsistem.
- Kode menjadi lebih terstruktur dan mudah dipahami.
-
๐น Facade Class
Manajemen_Penjualanโ Bertindak sebagai antarmuka yang berinteraksi dengan pengguna (Admin), mengakses dan mengelola subsistem Tambah_Data dan Hitung_Penjualan. -
๐น Subsystem 1
Tambah_Dataโ Bertanggung jawab untuk menerima input dan menyimpan data handphone yang terjual. -
๐น Subsystem 2
Hitung_Penjualanโ Menghitung total penjualan berdasarkan daftar handphone yang telah dimasukkan. -
๐น Class
Handphonedan Subclass โ Mewakili berbagai jenis handphone yang memiliki spesifikasi unik.
- Admin menjalankan program dan memanggil
mulai_proses(). - Facade
Manajemen_Penjualanmeminta input data handphone kepada Admin. - Admin memasukkan data, dan Facade
Manajemen_Penjualanmemberikan inputan admin ke subsistemTambah_Datadibuatkan objek handphone sesuai merk menggunakan subclassHandphone. - Data handphone disimpan ke dalam daftar di sistem
Tambah_Data - Facade meminta sistem
Hitung_Penjualanuntuk menghitung total penjualan. - Facade menampilkan semua data handphone dan hasil perhitungan ke Admin.
Mediator Pattern adalah pola desain yang digunakan untuk mengelola komunikasi antara objek tanpa membuat mereka langsung saling berhubungan. Dengan ini:
-
Objek-objek tidak perlu tahu detail objek lain yang berinteraksi dengannya.
-
Mengurangi ketergantungan antar objek sehingga meningkatkan fleksibilitas dan skalabilitas kode.
-
Memusatkan logika komunikasi dalam satu mediator, mempermudah pemeliharaan kode.
-
๐น
Mediator(Interface): Mendefinisikan metode tambah_penjualan() dan tampilkan_penjualan() yang harus diimplementasikan setiap mediator konkret. -
๐น
TokoMediator(Concrete Mediator): Mengelola daftar handphone yang terjual dan bertanggung jawab untuk menampilkan daftar handphone dan total penjualan. -
๐น
Handphone(Abstract Class): Merupakan superclass dari berbagai merk handphone, dengan atribut seperti merk, model, harga, dan metode daftar_terjual() untuk menambahkan data penjualan. -
๐น
iPhone,Samsung,Xiaomi(Concrete Classes): Subclass dari Handphone yang mewakili berbagai jenis handphone dengan atribut spesifik masing-masing.
- Admin memasukkan tanggal penjualan handphone.
- Main Program meminta input data handphone (merk, model, harga, dll.).
- Data yang diinput ditambahkan ke daftar penjualan sesuai dengan merek handphone.
- TokoMediator membuat objek handphone berdasarkan merek.
- Handphone diinisialisasi dengan atribut yang diberikan.
- Objek handphone ditambahkan ke daftar penjualan dalam mediator.
- Main Program meminta mediator untuk menampilkan daftar penjualan.
- Mediator mengambil daftar handphone yang telah terjual.
- Data dikirimkan kembali ke Main Program.
- Total penjualan dihitung berdasarkan harga dan jumlah unit.
- Data dikembalikan ke Main Program untuk ditampilkan.
- Main Program menampilkan daftar penjualan dan total penjualan kepada admin.
Meskipun kita menggunakan design pattern yang berbeda seperti Singleton Pattern, Facade Pattern, atau Mediator Pattern, hasil akhir dari program saat dijalankan akan tetap sama. Hal ini terjadi karena setiap design pattern hanya mengatur bagaimana komponen dalam sistem berinteraksi, bukan mengubah logika bisnis utama dari aplikasi.










