КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Factory Method
Производящие шаблоны Производящие шаблоны предназначены для обеспечения выполнения одной из самых распространённых задач в ООП – создания экземпляров объектов в системе. В ходе работы большинства объектно-ориентированных систем, независимо от уровня их сложности, создаётся множество экземпляров объектов. Производящие шаблоны облегчают процесс создания объектов, предоставляя разработчику следующие возможности:
Мы рассмотрим следующие производящие шаблоны:
Определяет стандартный метод создания объекта, не связанный с вызовом конструктора, оставляя решение о том, какой именно объект создавать за подклассами.
При этом классу, который будет вызывать статический метод ProductFactory.createProduct() нет необходимости знать какой конкретно экземпляр будет возвращён, он будет работать только с интерфейсом:
… Product product = ProductFactory.createProduct();
//do something with the product …
Реализация метода createProduct() может создавать тот или иной подкласс интерфейса Product, в зависимости от конфигурации, например: … public static Product createProduct() throws Exception{ return Class.forName(System.getProperty(“productclass”)).newInstance(); } … После чего можно запускать JVM: java –Dproductclass=mypackage.ProductB my.MainClass
Таким образом можно избежать зависимости кода от конкретных реализаций того или иного класса. Однако для того чтобы этого добыться надо следить, чтобы классы которые могут быть подменены таким образом реализовывали один и тот же абстрактный интерфейс. По такому принципу сделан DriverManager.getConnection() в JDBC API.
Дата добавления: 2014-01-05; Просмотров: 446; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |