Tasarım Kalıpları (Design Patterns)

KATEGORİ

Creational tasarım kalıpları

  • Factory Method
  • Abstract Factory
  • Builder
  • Prototype
  • Singleton

Structural Tasarım Kalıpları

  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Facade
  • Flyweight
  • Proxy

Behavioral Tasarım Kalıpları

  • Chain of Responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Observer
  • State
  • Strategy
  • Template Method
  • Visitor

Factory Method

Factory method tasarım kalıbı, creational bir kalıptır. Nesnelerin oluşturulma süreçlerini soyutlar ve bu nesnelerin doğrudan oluşturulmasından ziyade bir fabrikadan alınmasını sağlar. Müşteri sadece fabrikadan bir ürün talep eder, nasıl üretildiğiyle ilgilenmez. Farklı türde nesneler oluşturmak için alt sınıflar tanımlanır. Aşağıdaki hackerrank probleminde de bir Food interface’i tanımlanıyor. Alt sınıflar bu interface’i implement ederler. FoodFactory sınıfı içindeki getFood methodu da gelen isteğe göre ilgili nesneyi üretir.

import java.util.*;
import java.security.*;
interface Food {
	 public String getType();
}

class Pizza implements Food {
     public String getType() {
	 return "Someone ordered a Fast Food!";
     }
}

class Cake implements Food {
      public String getType() {
	 return "Someone ordered a Dessert!";
	}
}

class FoodFactory {

     public Food getFood(String order) {
    
        if ("cake".equalsIgnoreCase(order)) {
            return new Cake();
        } else if ("pizza".equalsIgnoreCase(order)) {
            return new Pizza();
        } else {
            return null;
        }

}

Singleton Design Pattern

Singleton tasarım kalıbı, bir sınıftan sadece bir nesne oluşturulacağı ve bu nesneye erişimin de kısıtlı olacağı zamanlarda kullanılır. Sistem daha kullanışlı ve tutarlı bir hale gelir.

class Singleton {
    private static Singleton instance;
    public static String str;
    private Singleton() {}

    static Singleton getSingleInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}