싱글톤 패턴과 템플릿 메소드 패턴

싱글톤 패턴과 템플릿 메소드 패턴에 대해 알아보겠습니다. 싱글톤 패턴은 애플리케이션 내에서 특정 인스턴스가 하나만存在하도록 보장하는 패턴으로, '곤한 모드'와 '锇은 모드'로 나뉩니다. 두 모드의 차이점은锇은 모드가 인스턴스를 명시적으로 제공하지 않는다는 점입니다.

  1. 곤한 모드: 이 모드에서는 클래스 내부에서 인스턴스를 직접 생성하고, 외부에서 인스턴스를 얻기 위해 메서드를 제공합니다.
public class Singleton {
    private Singleton() {
    }

    private static Singleton instance = new Singleton();

    public static Singleton getInstance() {
        return instance;
    }
}
  1. 锇은 모드: 이 모드에서는 인스턴스를 지연 생성합니다.
public class LazySingleton {
    private LazySingleton() {
    }

    private static LazySingleton instance;

    public static LazySingleton getInstance() {
        if (instance == null) {
            instance = new LazySingleton();
        }
        return instance;
    }
}

테스트:

public class Test {
    public static void main(String[] args) {
        Singleton singleton1 = Singleton.getInstance();
        Singleton singleton2 = Singleton.getInstance();
        if (singleton1 == singleton2) {
            System.out.println("두 객체가 동일합니다.");
        } else {
            System.out.println("두 객체가 달라합니다.");
        }

        LazySingleton lazy1 = LazySingleton.getInstance();
        LazySingleton lazy2 = LazySingleton.getInstance();
        if (lazy1 == lazy2) {
            System.out.println("두 객체가 동일합니다.");
        } else {
            System.out.println("두 객체가 달라합니다.");
        }
    }
}

템플릿 메소드 패턴: 템플릿 메소드 패턴은 특정 알고리즘의 구조를 정의하면서 일부 세부사항을 추상화합니다. 예를 들어 음료기의 경우, 커피와 녹차这两种 음료를 만들 수 있습니다.

  1. 음료기 클래스:
public abstract class DrinkMachine {
    public void boilWater() {
        System.out.println("물 끓이기");
    }

    public abstract void brew();
    public void pourDrink() {
        System.out.println("음료를컵에 담기");
    }

    public abstract void addIngredients();
}
  1. 커피 기계 클래스:
public class CoffeeMachine extends DrinkMachine {
    public void addIngredients() {
        System.out.println("우유 추가");
    }

    public void brew() {
        System.out.println("커피 끓이기");
    }
}
  1. 녹차 기계 클래스:
public class TeaMachine extends DrinkMachine {
    public void addIngredients() {
        System.out.println("柠檬 추가");
    }

    public void brew() {
        System.out.println("차 끓이기");
    }
}

테스트:

public class Test {
    public static void main(String[] args) {
        DrinkMachine coffeeMachine = new CoffeeMachine();
        coffeeMachine.boilWater();
        coffeeMachine.brew();
        coffeeMachine.pourDrink();
        coffeeMachine.addIngredients();

        System.out.println("************************");

        DrinkMachine teaMachine = new TeaMachine();
        teaMachine.boilWater();
        teaMachine.brew();
        teaMachine.pourDrink();
        teaMachine.addIngredients();
    }
}

태그: 패턴 싱글톤 템플릿

6월 17일 18:24에 게시됨