Design patterns
Листинг 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 методом setValue() или просмотреть его текущее состояние методом getValue().
Это только схема – класс singleton надо еще наполнить полезным содержимым, но идея выражена ясно и полностью.
Схемы проектирования были систематизированы и изложены в книге. Четыре автора этой книги были прозваны "бандой четырех" (Gang of Four), а книга, коротко, "GoF". Схемы обработки информации получили название "Design Patterns". Русский термин еще не устоялся. Говорят о "шаблонах", "схемах разработки", "шаблонах проектирования".
В книге GoF описаны 23 шаблона, разбитые на три группы:
- Шаблоны создания объектов: Factory, Abstract Factory, Singleton, Builder, Prototype.
- Шаблоны структуры объектов: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.
- Шаблоны поведения объектов: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template, Visitor.
Мы, к сожалению, не можем разобрать подробно design patterns в этой книге. Но каждый программист начала XXI века должен их знать. Описание многих разработок начинается словами: "Проект решен на основе шаблона", и структура проекта сразу становится ясна для всякого, знакомого с design patterns.
По ходу книги мы будем указывать, на основе какого шаблона сделана та или иная разработка.
Заключение
Вот мы и закончили первую часть книги. Теперь вы знаете все основные конструкции языка Java, позволяющие спроектировать и реализовать проект любой сложности на основе ООП. Оставшиеся конструкции языка, не менее важные, но реже используемые, отложим до четвертой части. Вторую и третью часть книги посвятим изучению классов и методов, входящих в Core API. Это будет для вас хорошей тренировкой.
Язык Java, как и все современные языки программирования, – это не только синтаксические конструкции, но и богатая библиотека классов. Знание этих классов и умение пользоваться ими как раз и определяет программиста-практика.