Пример использования шаблона singleton

August 18th, 2009 | Tags: , , , ,

Следующий кусок кода “в незатейливой и шутливой форме” знакомит нас с паттерном проектирования singleton. Суть примера: у команды пиратов есть одна бутылка рома, из которой они периодически выпивают случайное количество жидкости. Когда ром кончается, пират, который обнаруживает это, становится безумным и убивает всех вокруг.

public class BottleOfRum {
    private int rumAmount;  // how much of rum is in the bottle (in percents)
    static private BottleOfRum theBottle = null;

    BottleOfRum() { // constructor
        rumAmount = 100;
    }                                                                                                    

    public drink(int amount) {
        rumAmount -= amount;
    }

    public getRumAmount() {
        return rumAmount;
    }

    public static giveMeTheBottle() {
        if (theBottle == null) {
            theBottle = new BottleOfRum();
        }

        return theBottle;
    }
}

public class Pirate {
    public int drinkSomeRum() {
        BottleOfRum bottle = BottleOfRum.giveMeTheBottle();

        // if there is some rum
        if (bottle.getRumAmount() > 0) { // drink
            bottle.drink( bottle.getRumAmount()*Math.random() );
        } else { // become mad and kill everybody around
            becomeMad();
            killCrashAndDestroy();
        }

        return bottle.getRumAmount();
    }
}
No comments yet.

or