Pada sesi tutorial-3
kemarin, kamu sudah menerapkan dua buah design pattern, yaitu Adapter
dan Facade
. Pada sesi tutorial-4
ini, kamu akan menerapkan design pattern yang sudah kamu pelajari minggu ini, yaitu Abstract Factory
dan Singleton
.
Di hari Minggu yang tenang, tiba-tiba teman lamamu yang bernama David Gedegin meneleponmu. Dia merupakan seorang reviewer smartphone yang sangat terkenal. David meminta kamu untuk membuatkan sebuah aplikasi sederhana untuk memudahkannya me-review smartphone baru.
Permintaannya cukup sederhana. Pada awalnya, aplikasi harus menampilkan daftar merek smartphone yang akan di-review dalam bentuk dropdown list. Ketika sebuah merek dipilih dari dropdown, aplikasi kemudian menampilkan komponen-komponen smartphone dan harga jualnya. Agar tidak terlalu rumit, David hanya ingin menampilkan 3 komponen utama saja, yaitu RAM
, Processor
, dan Screen
. Selain itu, merek smartphone yang ingin di-review saat ini hanya ada 3, yakni Sumsang
, Siomi
, dan Oddo
.
David kemudian menjelaskan lebih rinci terkait dengan komponen dan merek smartphone tersebut sebagai berikut.
RAM
merupakan memori sementara yang digunakan untuk menjalankan suatu aplikasi. Semakin besar ukuran RAM
, semakin cepat juga suatu aplikasi berjalan. Ada 2 jenis RAM
pada smartphone, yaitu:
SeRAM
: Memiliki ukuran 12GB dengan harga Rp350.000,00GeRAM
: Memiliki ukuran 8GB dengan harga Rp220.000,00
Processor
merupakan otak dari sebuah smartphone yang menjadi pengendali dari semua komponen yang ada di dalamnya. Ada 3 jenis Processor
pada smartphone, yaitu:
SnackDragon
: Memiliki kecepatan 4.0 GHz dengan harga Rp500.000,00MediaPack
: Memiliki kecepatan 3.6 GHz dengan harga Rp380.000,00ExyYes
: Memiliki kecepatan 3.8 GHz dengan harga Rp420.000,00
Screen
atau layar menjadi komponen utama agar bisa memvisualisasikan gambar kepada pengguna. Ada 2 jenis Screen
pada smartphone, yakni:
Alomed
: Memiliki refresh rate 120 Hz dengan harga Rp250.000,00Delo
: Memiliki refresh rate 60 Hz dengan harga Rp120.000,00
Setiap merek smartphone terdiri atas kombinasi beberapa komponen. Berikut merupakan komponen-komponen yang ada pada tiga merek smartphone beserta formula harga penjualannya:
Merek | RAM | Processor | Screen | Formula Harga Jual |
---|---|---|---|---|
Sumsang | SeRAM | ExyYes | Alomed | |
Siomi | GeRAM | SnackDragon | Delo | |
Oddo | SeRAM | MediaPack | Delo |
Karena David merupakan seorang programmer juga, dia meminta kamu untuk membangun aplikasinya dengan menggunakan abstract factory pattern
. Hal ini supaya jika nanti ada smartphone baru yang dirilis, David dapat dengan mudah menambahkan smartphone tersebut beserta komponen-komponennya ke dalam aplikasi.
- Implementasi concrete component sesuai dengan detail komponen yang diberikan
- Implementasi concrete factory sesuai dengan detail merek yang diberikan
- Implementasi concrete brand smartphone dengan benar
- Implementasi method
getSmartPhone
pada classSmartPhoneBuilder
dengan benar - Implementasi method
createSmartPhone
pada classAndriodBuilder
dengan benar - Sebelum menampilkan spesifikasi, smartphone harus dibuat terlebih dahulu dengan cara memasangkan komponen-komponen yang sesuai dengan brandnya
- Sistem dapat menampilkan spesifikasi smartphone yang ingin dicari dengan benar
-
Endpoint
/smartphone
menampilkan pilihan smartphone yang ingin dilihat spesifikasinya. -
Endpoint
/smartphone?brandInput={brand}
menampilkan spesifikasi smartphone untuk suatu brand.
Pada minggu sebelumnya, kamu telah menyelesaikan salah satu masalah dalam mengimplementasikan sistem autentikasi yaitu enkripsi. Namun, ada satu masalah lagi yang perlu diimplementasikan pada sistem autentikasi tersebut yaitu cookie. Saat ini, kamu hanya perlu membuat komponen baru untuk menambah fungsionalitas sistem autentikasi tersebut.
Pengguna dapat membuat akun dengan cara register menggunakan username dan password. Setelah akun berhasil dibuat, pengguna dapat login menggunakan username dan password tersebut. Berbeda dengan sebelumnya, pengguna akan memperoleh suatu token setelah pengguna login. Token tersebut akan disimpan sebagai cookie sehingga setiap kali pengguna mengakses endpoint pada aplikasi tersebut, token tersebut akan dikirimkan.
Untuk kebutuhan saat ini, endpoint /auth/authorized
hanya dapat diakses oleh pengguna yang sudah terautentikasi. Selain itu, pengguna tidak bisa login secara bersamaan menggunakan satu akun yang sama. Pengguna harus logout pada /auth/logout
terlebih dahulu untuk dapat melakukan login di browser atau device yang berbeda.
-
Endpoint
/auth/authorized
ketika diakses tanpa akun yang terautentikasi. -
Endpoint
/auth/authorized
ketika diakses dengan akun yang terautentikasi. -
Endpoint
/auth/login
ketika pengguna login menggunakan akun yang sama secara bersamaan.
Kamu perlu melengkapi kode yang sudah ada sehingga fungsionalitasnya dapat berjalan sesuai ekspektasi yang dijelaskan di atas.