BufferedReader
и т. Д. Реализует шаблон декоратора . Любой Reader
, например, FileReader
или StringReader
, может быть оформлено с функцией буферизации, которая действительно не обращает внимания на источник.
Другие модели
Анти-паттерны
Чтобы добавить к тому, что сказали другие, в библиотеках Java есть несколько anti -шаблонов:
Антипаттерн: наследство вместо композиции
С Effective Java 2nd Edition, Item 16: Композиция Favour по наследованию :
В библиотеках платформы Java есть ряд очевидных нарушений этого принципа. Например, стек не является вектором, поэтому Stack
не должен расширяться Vector
. Аналогично, список свойств не является хеш-таблицей, поэтому Properties
не должен расширяться Hashtable
. В обоих случаях состав был бы предпочтительнее.
Похожие вопросы
Антипаттерн: постоянные интерфейсы
Начиная с Effective Java 2nd Edition, Item 19: Используйте интерфейсы только для определения типов :
В библиотеках платформы Java есть несколько постоянных интерфейсов, таких как java.io.ObjectStreamConstants
. Эти интерфейсы должны рассматриваться как аномалии и не должны эмулироваться.
Смежные вопросы
Antipattern: телескопический конструктор и шаблоны JavaBeans
Начиная с Effective Java 2nd Edition, Item 2: Рассмотрите конструктор, когда сталкиваетесь со многими параметрами конструктора ( выдержка онлайн ):
Традиционно программисты использовали шаблон телескопического конструктора , в котором вы предоставляете конструктору только необходимые параметры, другой - с одним необязательным параметром, третий - с двумя дополнительными параметрами и т. Д. [. ..] Шаблон телескопического конструктора работает, но при большом количестве параметров написать клиентский код сложно, а написать его еще сложнее.
Второй альтернативой, когда вы сталкиваетесь со многими параметрами конструктора, является шаблон JavaBeans , в котором вы вызываете конструктор без параметров для создания объекта, а затем вызываете методы установки для установки каждого обязательного параметра, и каждый необязательный параметр интереса. [...] К сожалению, шаблон JavaBeans имеет серьезные недостатки [...], поскольку собственный JavaBean может находиться в несовместимом состоянии в процессе его построения [и это] исключает возможность сделать класс неизменным.
Bloch рекомендует использовать вместо этого шаблон .
Похожие вопросы