Skip to content

Creational Design Pattern: Abstract Factory Pattern and Singleton Pattern.

Notifications You must be signed in to change notification settings

CSUI-Adpro/tutorial-4

Repository files navigation

Tutorial 4

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.

Abstract Factory Pattern

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.

Komponen

1. RAM

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,00
  • GeRAM: Memiliki ukuran 8GB dengan harga Rp220.000,00

2. Processor

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,00
  • MediaPack: Memiliki kecepatan 3.6 GHz dengan harga Rp380.000,00
  • ExyYes: Memiliki kecepatan 3.8 GHz dengan harga Rp420.000,00

3. Screen

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,00
  • Delo: Memiliki refresh rate 60 Hz dengan harga Rp120.000,00

Merek Smartphone

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 $(3 * harga_processor + 3 * harga_RAM + 1.5 * harga_screen)$
Siomi GeRAM SnackDragon Delo $(1.5 * harga_processor + 2 * harga_RAM + harga_screen)$
Oddo SeRAM MediaPack Delo $(2 * harga_processor + 2 * harga_RAM + 2 * harga_screen)$

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.

Requirements

  • 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 class SmartPhoneBuilder dengan benar
  • Implementasi method createSmartPhone pada class AndriodBuilder 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

Expected Result

  • Endpoint /smartphone menampilkan pilihan smartphone yang ingin dilihat spesifikasinya.

  • Endpoint /smartphone?brandInput={brand} menampilkan spesifikasi smartphone untuk suatu brand.

UML Diagram

Diagram UML Abstract Factory Pattern

Singleton Pattern

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.

Expected Result

  • 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.

UML Diagram

Diagram UML Singleton Pattern

About

Creational Design Pattern: Abstract Factory Pattern and Singleton Pattern.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published