Skip to content

Okiled/Jawa-Design-Pattern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Java Design Patterns - Performance Comparison

Project implementasi 5 Design Patterns dalam Java dengan perbandingan performa antara kode tanpa pattern dan dengan pattern.


Deskripsi Project

Project ini mendemonstrasikan perbedaan antara kode procedural biasa dengan kode yang menggunakan design pattern. Setiap pattern memiliki 2 versi:

  • Before: Implementasi tanpa menggunakan design pattern
  • After: Implementasi dengan design pattern yang sesuai

Tujuan utama adalah menunjukkan bagaimana design pattern dapat meningkatkan struktur kode dan performa aplikasi.


Design Patterns yang Diimplementasikan

1. Singleton Pattern - Cache Manager

Memastikan hanya ada satu instance dari cache manager yang digunakan di seluruh aplikasi.

Before / After

Before: Setiap request membuat instance CacheManager baru dengan inisialisasi lengkap After: Menggunakan satu instance yang sama untuk semua request

Keuntungan

  • Hemat memory (tidak ada duplikasi instance)
  • Hemat waktu inisialisasi
  • Data cache konsisten di seluruh aplikasi

2. Factory Pattern - HTTP Request Factory

Memisahkan logika pembuatan object dari logika bisnis.

Before / After

Before: Menggunakan if-else bertingkat untuk instantiasi object berdasarkan tipe After: Factory class yang mengelola pembuatan object HTTP Request

Keuntungan

  • Kode lebih clean dan mudah dibaca
  • Mudah menambah tipe request baru
  • Centralized object creation
  • Menggunakan caching untuk reusable objects

3. Abstract Factory Pattern - GUI Factory

Membuat keluarga object yang saling berhubungan tanpa perlu specify class konkret.

Before / After

Before: Manual instantiation untuk Dialog, Menu, dan Toolbar setiap platform After: Factory yang memproduksi komponen GUI yang konsisten per platform (Windows/Mac)

Keuntungan

  • Konsistensi antar komponen dalam satu platform
  • Mudah menambah platform baru (Linux, dll)
  • Loose coupling antara client code dan concrete classes
  • Code reusability tinggi

4. Builder Pattern - Email Message Builder

Membangun object kompleks step-by-step dengan interface yang fluent.

Before / After

Before: Setter method beruntun yang panjang dan rentan error After: Fluent builder interface dengan method chaining

Keuntungan

  • Kode lebih readable dan ekspresif
  • Immutable object (thread-safe)
  • Flexible construction (optional parameters)
  • Prevent inconsistent object state

5. Prototype Pattern - Game Character Cloning

Membuat object baru dengan cloning object yang sudah ada.

Before / After

Before: Membuat instance baru dengan constructor dan inisialisasi penuh setiap kali After: Clone template object yang sudah ada (deep copy)

Keuntungan

  • Lebih cepat daripada instantiation baru
  • Hemat resource untuk object kompleks
  • Mudah membuat variasi dari template yang sama
  • Menghindari expensive initialization berulang

Requirements

  • Java JDK 17 atau lebih tinggi
  • PowerShell (untuk Windows)
  • Visual Studio Code (optional)

Cara Menjalankan Project

Langkah 1: Buka PowerShell

  • Buka VSCode
  • Buka Terminal (Ctrl + `)
  • Pastikan menggunakan PowerShell
  • Pastikan berada di root folder project (sejajar dengan folder src)

Langkah 2: Copy Paste Command Berikut ke PowerShell

Compile dan Run Semua Pattern:

New-Item -ItemType Directory -Force -Path bin | Out-Null

Write-Host "Compiling all files..." -ForegroundColor Yellow

javac -d bin src/singleton/before/*.java
javac -d bin src/singleton/after/*.java
javac -d bin src/factory/before/*.java
javac -d bin src/factory/after/*.java
javac -d bin src/abstractfactory/before/*.java
javac -d bin src/abstractfactory/after/*.java
javac -d bin src/builder/before/*.java
javac -d bin src/builder/after/*.java
javac -d bin src/prototype/before/*.java
javac -d bin src/prototype/after/*.java

Write-Host "`nRunning all tests...`n" -ForegroundColor Green

java -cp bin singleton.before.Main
java -cp bin singleton.after.Main
Write-Host ""

java -cp bin factory.before.Main
java -cp bin factory.after.Main
Write-Host ""

java -cp bin abstractfactory.before.Main
java -cp bin abstractfactory.after.Main
Write-Host ""

java -cp bin builder.before.Main
java -cp bin builder.after.Main
Write-Host ""

java -cp bin prototype.before.Main
java -cp bin prototype.after.Main

Write-Host "`nDone!" -ForegroundColor Green

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages