Java -практика использования

       

Схема Singleton



Листинг 3.5. Схема Singleton

final class Singleton{

  private static Singleton s = new Singleton(0);
 

  private int k;



  private Singleton(int i){k = i;} 

  public static Singleton getReference()(return s;} 

  public int getValue(){return k;} 

  public void setValue(int i){k = i;} 

public class SingletonTest {

  public static void main(String[] args){ 

    Singleton ref = Singleton.getReference();
 

    System.out.println(ref.getValue());
 

    ref.setValue(ref.getValue() + 5);
 

    System.out.println(ref.getValue());
 

  } 

}

Класс singleton окончательный — его нельзя расширить. Его конструктор закрытый — никакой метод не может создать экземпляр этого класса. Единственный экземпляр s класса singleton — статический, он создается внутри класса. Зато любой объект может получить ссылку на экземпляр методом getReference () , Изменить состояние экземпляра s методом s etValue() или просмотреть его текущее состояние методом getValue() .

Это только схема — класс singleton надо еще наполнить полезным содержимым, но идея выражена ясно и полностью.

Схемы проектирования были систематизированы и изложены в книге [7]. Четыре автора этой книги были прозваны "бандой четырех" (Gang of Four), а книга, коротко, "GoF". Схемы обработки информации получили название "Design Patterns". Русский термин еще не устоялся. Говорят о "шаблонах", "схемах разработки", "шаблонах проектирования".

В книге GoF описаны 23 шаблона, разбитые на три группы:

1. Шаблоны создания объектов: Factory, Abstract Factory, Singleton, Builder, Prototype.

2. Шаблоны структуры объектов: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.

3. Шаблоны поведения объектов: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template, Visitor.

Описания даны, в основном, на языке C++. В книге [8] те же шаблоны представлены на языке Java. Той же теме посвящено электронное издание [9]. В книге [10] подробно обсуждаются вопросы разработки систем на основе design patterns.

Мы, к сожалению, не можем разобрать подробно design patterns в этой кни-те. Но каждый программист начала XXI века должен их знать. Описание многих разработок начинается словами: "Проект решен на основе шаблона", и структура проекта сразу становится ясна для всякого, знакомого с design patterns.

По ходу книги мы будем указывать, на основе какого шаблона сделана та или иная разработка.



Содержание раздела