Патерн (принцип) IOC&DI 2010 (Курс “Інформаційні технології”)

Slides:



Advertisements
Similar presentations
Патерн (принцип) IOC&DI IoC2 Spring Framework.
Advertisements

Розробка Web-проектів із використанням Spring Framework 2008 (Курс “Інформаційні технології”)
АТ Інститут Інформаційних Технологій Комплекс засобів криптографічного захисту інформації на платформі IBM Lotus Заступник головного конструктора Горбенко.
10 КЛАС ЗА ПІДРУЧНИКОМ «ІНФОРМАТИКА. 10 КЛАС» Й.Я. РИВКІНДА, Т.І. ЛИСЕНКО, Л.А. ЧЕРНІКОВОЇ, В.В. ШАКОТЬКО Вивчаємо інформатику СЗОШ № 8 м.Хмельницького.
Українська народна вишивка — один із видів декоративно-ужиткового мистецтва Презентацію створено за допомогою комп’ютерної програми ВГ «Основа» «Електронний.
Кротова І.В., методист Центру аналізу та прогнозування розвитку освіти Всеукраїнська українознавча гра «Соняшник»
Нормативно-методичне забезпечення викладання навчального предмета “ Основи здоров’я” в навчальному році Волкова І.В., завідувач, Берзіня О.О.,
Реєстрація на ЗНО-2015 ЗНО-2015 ЗОВНІШНЄ НЕЗАЛЕЖНЕ ОЦІНЮВАННЯ.
Петраківський навчально-виховний комплекс „Дошкільний навчальний заклад – загальноосвітня школа І-ІІІ ступенів” Черкаської області.
М УЛЬТИМЕДІЙНІ ПРЕЗЕНТАЦІЇ Мультимедійні технології С ТВОРЕННЯ КЛІПІВ.
Нуклеїнові кислоти. Біологічна роль нуклеїнових кислот.
Пилипенко Олена Володимирівна,
Відділ освіти Кам’янської райдержадміністрації Грушківської загальноосвітньої школи І-ІІІступенів Презентація до уроку з природознавства в 6 класі на тему:
ОПЕРАЦІЙНА СИСТЕМА Windows 
Створення та форматування інформаційного вмісту презентації
Презентація на тему: Органічні речовини і здоров'я людини
Створення макросів в автоматичному режимі
Шаблони документів і робота з ними
В ИКОРИСТАННЯ ІКТ У ВИХОВНОМУ ПРОЦЕСІ. Майбутнє будь- якої держави визначається системою освіти, яка в ній існує!
Тренінг на тему: „Використання інформаційно-комунікаційних технологій (ІКТ) під час навчально-виховного процесу в загальноосвітньому закладі”
на тему: “Сучасний урок у початковій школі”
Впровадження нового Державного стандарту
Компетенція – коло питань, у яких людина має знання та досвід.
Словник пояснення конкретного слова переклад з однієї мови на іншу.
Вбудовування та зв’язування файлів. Веб-публікація документів
Василевська Ольга Віталіївна
Основні поняття та засоби комп'ютерної графіки
Робота з Windows Файл, папка.
Пpавила техніки безпеки під час pоботи на комп’ютеpі. Поняття по інформацію. Повідомлення. Способи подання і кодування повідомлень. Двійкове кодування.
Про нормативність організації і проведення ДПА та навчальної практики у ЗНЗ, оформлення шкільної документації Заступник начальника відділу освіти Малець.
Кристалічні ґратки. Залежність фізичних властивостей речовини від типів кристалічних ґраток.
Загальне поняття про прикметник
Вимірювання та вимірювальні прилади Лабораторна робота
Основи векторної графіки
Електронні таблиці 3.7. Діаграми в Excel «Не бійся, що не знаєш – бійся, що не навчишся». (Китайська мудрість)
Електронні таблиці MS Excel.
ОПЕРАЦІЙНА СИСТЕМА Windows Встановіть відповідність 
Сенсорне виховання як важлива складова у всебічному розвитку
Комп'ютерні презентації
Автори навчально - методичного комплекту : М. С. Вашуленко, доктор педагогічних наук, професор, дійсний член НАПН України С. Г. Дубовик, кандидат педагогічних.
Завідувач РМК Міщенко В.С.
година правової абетки у 5 класі
Тема: Закон Авогадро. Молярний об’єм газів.
Як держава захищає права дитини в сім'ї
Як закон регулює працю неповнолітніх
Сходинки до інформатики. 2 клас за новою державною програмою
Google App Engine for Java Google App Engine2 Google App Engine (GAE) – це інфраструктура хмарних обчислень, яка орієнтована на підтримку веб-додатків.
Платформа Microsoft Azure 2014 (До 2014 року платформа мала назву Windows Azure)
Web MVC фреймворки WebWork та Struts (Курс “Інформаційні технології”)
Ant Ant2 Призначення: виконання повторюваних, як правило, рутинних завдань, пов'язаних із розробкою, розгортанням, виконанням проектів. Приклади.
1 Постановою Кабінету Міністрів України від 23 листопада 2011 р. № 1392 затверджено новий Державний стандарт базової і повної загальної середньої освіти.
До використання COM- об’єктів у Visual Studio (C#)
Розробка Web-проектів із використанням Struts Framework 2008.
Web-framework Tapestry 2008 (Курс “Інформаційні технології”)
Google Web Toolkit (GWT). AJAX-додатки
Google Web Toolkit (GWT). AJAX-додатки
Навчальний елемент Робота з меню у програмі Windows'95 Назва: Оператор комп’ютерного набору Професія: UA002 Код:
ITERATOR Патерн поведінки Доповідач: Пропой Ярослав Рецензент: Мельниченко Владислав 0/40 NEXTSTART.
Списки типів Нікітін Олексій. Навіщо потрібні списки типів? Розглянемо шаблон Abstract Factory. class WidgetFactory { public: virtual Window* createWindow()
Горобей Тетяна Павлівна, учитель математики Фастівського ліцею-інтернату.
МАГІСТЕРСЬКА РОБОТА МАГІСТЕРСЬКА РОБОТА На тему “Проект реконструкції території санаторію відновного лікування працівників ВВС у місті Ворзель“ Доповідач:
D H P T K E Підготувала учениця 8 класу Гайда Вікторія.
Технологія виконання швів «козлик» та «оксамитовий»
Активність радіонуклідів
1 ЕКОЛОГІЧНИЙ МОНІТОРИНГ СТАНУ ГРУНТОВИХ ВОД В УРБОЕКОСИСТЕМІ.
Ресурси веб-сайту Книжкової палати України на допомогу бібліотекам.
Iterator と Adaptor デザインパターン 第1回
Java RMI & CORBA Java RMI & CORBA2 Зміст J2EE. Підтримка CORBA. –Технологія Java IDL. –Технологія Java RMI/IIOP Сумісність RMI/IIOP - та CORBA-проектів.
2015. Два рiвні складності сертифікаційної роботи (тесту) Абітурієнти складали тест ЗНО з математики двох рівнів складності – базового і поглибленого,
АВТОМАТИЗОВАНИЙ ЕЛЕКТРОПРИВОД МІКСЕРА ПРИГОТУВАННЯ ФРУКТОВО- ОВОЧЕВИХ СОКОВИХ СУМІШЕЙ Керівник проекту: к.т.н. Бабій С. М. Виконав: ст. гр. ЕПА-14м Гома.
Presentation transcript:

Патерн (принцип) IOC&DI 2010 (Курс “Інформаційні технології”)

IoC Spring Framework

IoC Spring Framework

IoC IoC Container – ядро Spring Framework Патерн (принцип) IOC & DI — Inversion of Control (IoC) and Dependency Injection (DI)

IoC До залежності класів... Динаміка... public class Class1 { public Class2 theClass2 = new Class2() ; public Class3 theClass3 = new Class3() ; public Class1() { } Додано після генерації коду

IoC Патерн IOC&DI на прикладі (1/4) package com.kvf.demo; public interface IGreeting { void printGreeting(); } package com.kvf.demo; import com.kvf.demo.IGreeting; public class Hi implements IGreeting{ public void printGreeting() { System.out.println("Hi!"); } package com.kvf.demo; import com.kvf.demo.IGreeting; public class Hello implements IGreeting{ public void printGreeting() { System.out.println("Hello!"); } class Class1 - ? Задача: передбачити у класі Class1 можливість заміни об'єкту типу Hi на об'єкт типу Hello. (Код Class1 незмінний!) Залежність ? Іноді один з подібної пари класів є тестовим

IoC Патерн IOC&DI на прикладі (2/4) package com.kvf.demo; import com.kvf.demo.*; public class Class1 { private Hi greeting= new Hi(); public void foo() { greeting.printGreeting(); } private Hello greeting = new Hello (); Традиційне рішення не підходить Заміна коду

IoC Патерн IOC&DI на прикладі (3/4) package com.kvf.demo; import com.kvf.demo.IGreeting; public class Class1a { private IGreeting greeting; public void set Greeting ( IGreeting greeting ) { this. greeting = greeting ; } public void foo() { greeting.printGreeting(); } package com.kvf.demo; import com.kvf.demo.*; public class Super { // Runner public static void main(String[] args) { Class1a c = new Class1a (); c.set Greeting ( new Hi () ); c.foo(); } Незмінний java-код Class1a ! new H ello () Управління по створенню об'єктів типів Hi чи Hello “передано” (Inversion of Control ) класу Super (“Runner”). Запропонований код забезпечує ін'єкцію залежності (Dependency Injection ) між Class1a та класом Hi чи Hello відповідно. Dependency Injection Модифікація при пере- ході від Hi до Hello

IoC Патерн IOC&DI на прикладі (4/4) Spring Core (IoC container) виконує роль, подібну до Super, забезпечуючи створення об'єктів та ін'єкцію залежності

IoC IoC Container та патерн IOC&DI Патерн (принцип) Inversion of Control (IoC) and Dependency Injection (DI)

IoC Spring: IoC + декларативний стиль. Конфігураційний файл (контексту) beans_ctx.xml Компонентна “(дротяна) проводка” (Component Wiring) Spring Core бере на себе відповідальність за створення об'єктів (бінів) та їх “зв'язування” Eclipse +Spring Plugin (ПКМ | Open Dependency Graph)

IoC Eclipse. Spring Explorer. Open Graph (проект greeting)

IoC Конфігураційний файл (контексту) beans_ctx.xml <beans xmlns=" xmlns:xsi=" xsi:schemaLocation= " spring-beans.xsd"> <property name="greeting» ref="hi"> Заміни при переході від класу Hi до класу Hello

IoC Spring-проект. Перероблений основний клас Super.java package com.kvf.demo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Super { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans_ctx.xml"); Class1a c = (Class1a)ctx.getBean("class1a"); System.out.println("Greeting:"); c.foo(); }

IoC Виконання проекту (Run as -> Java Application )

IoC Виконання проекту при переході від класу Hi до класу Hello Єдине необхідне виправлення! Ніяка компіляція (чи перекомпіляція) не потрібна

IoC Spring IoC. Ще кілька прикладів

IoC Пригадаємо… Decorator (data & object factory™, dofactory.com)

IoC Пригадаємо… Decorator. Приклад class ConcreteDecoratorB : Decorator {override public void Operation() { base.Operation(); // Decor B } d2 : CDecB component= d1 : CDecA component= c : CComponent abstract class Decorator {protected Component component;... override public void Operation() { if( component != null ) component.Operation(); } // Link decorators d1.SetComponent( c ); d2.SetComponent( d1 ); d2.Operation(); “Додаткова гнучкість пов'язана з можливістю змінювати композицію об'єктів під час виконання програми”.

IoC Java public interface IComponent { void operation(); } public class Decorator implements IComponent{ private IComponent component; public void setComponent(IComponent component) { this.component = component; } public void operation(){ component.operation(); } public class ConcreteComponent implements IComponent{ public void operation(){ System.out.println( "ConcreteComponent!"); } public class DecoratorA extends Decorator { public void operation(){ super.operation(); System.out.println("DecoratorA"); }

IoC Eclipse. Spring-проект dekor з трьома конкретними декораторами

IoC Головний Java-клас import org.springframework.context.ApplicationContext; import org.springframework.context.support. ClassPathXmlApplicationContext; public class Project { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext( "beans_ctx.xml"); IComponent component; component = (IComponent)ctx.getBean("rootComponent"); component.operation(); }

IoC Конфігураційний файл (контексту) beans_ctx.xml <beans xmlns=" xmlns:xsi =" xsi:schemaLocation ="

IoC Spring-проект dekor

IoC “Open Dependency Graph”. (“Дротяна модель”) public class DecoratorA extends Decorator { public void operation(){ super.operation(); System.out.println("DecoratorA"); }

IoC Контролери для web-сторінок без форм (з файлу...-servlet.xml) <bean id="readMyNotesController" class="ReadMyNotesController">... Об'єкт бізнес-рівня public class ReadMyNotesController extends AbstractController { private INoteManager noteManager; protected ModelAndView handleRequestInternal( HttpServletRequest request, HttpServletResponse response) throws Exception {... public void setNoteManager(INoteManager noteManager) { this.noteManager = noteManager; }...

IoC Контролери для web-сторінок з формами (з файлу...-servlet.xml) <bean id="userLoginFormValidator” class="UserLoginFormValidator"> <bean id="userLoginFormController” class="UserLoginFormController"> true userToLogin UserDto userLogin userStart.html Валідатор (перевіряє дані, що уводяться у формі)

IoC applicationContext.xml (фрагменти) - (1/2) <beans xmlns=" xmlns:xsi=" xsi:schemaLocation="

IoC applicationContext.xml (фрагменти) - (2/2)