Шаблоны проектирования ООП. Принципы ООП Инкапсуляция Наследование Полиморфизм Абстракция данных.

Презентация:



Advertisements
Похожие презентации
Параллельная работа сокетов в C#. Потоки в C# using System; using System.Threading; public class ThreadExample { public static void ThreadProc() { for.
Advertisements

Test15 Вопрос 1. class AClass { } public class Test { public static void main (String... args) { ArrayList a = new ArrayList (); AClass aaaClass = new.
Test 14 Вопрос 1. class Main { public void method() { static class One { public One() { System.out.println("From one"); } } public static void main(String...
1 © Luxoft Training 2012 Inner and anonymous classes.
Разработка на Yii QuartSoft Corp. Системный архитектор Климов П.В.
Test 11 Вопрос 1. class HashTest { private static Set set = new LinkedHashSet (); public static void main(String[] args) { set.add("one"); set.add("two");
Функции с переменным числом аргументов private static int Sum(int a, int b) { return a + b; } static void Main() { int sum = Sum(1, 2); } 1 Функции.
Class Date { private int year = 0; private int month = 0; private int day = 0; public void SetDate (int y, int m, int d) { year = y; month = m; day = d;
Интерфейсы и наследование. Интерфейсы Объявление public interface OperateCar { // constant declarations, if any // method signatures int turn(Direction.
1/30 Chapter 8: Dynamic Binding And Abstract classes.
Практическое использование Java Макаревич Л. Г.. Инсталляция Java Документация в docs Прописать PATH (каталог bin в JSDK) Прописать CLASSPATH (путь к.
1 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; 2 namespace.
Unit II Constructor Cont… Destructor Default constructor.
Программная инженерия Андрей Дмитриев ©
2005 Pearson Education, Inc. All rights reserved. 1 Object-Oriented Programming: Interface.
© Luxoft Training 2013 Using Reflection API in Java.
Evgeniy Krivosheev Vyacheslav Yakovenko Last update: Feb, 2012 Spring Framework Module 4 – JNDI.
1 © Luxoft Training 2012 Spring Framework Inversion of control container Part 2.
Test 17 Вопрос 1. public class TKO { public static void main(String[] args) { String s = "-"; Integer x = 343; long L343 = 343L; if (x.equals(L343)) s.
1 When And How To Make Interfaces Work For You Advanced OO Techniques Alex Herbstritt Principal Software Engineer, Progress Software Session 102.
Транксрипт:

Шаблоны проектирования ООП

Принципы ООП Инкапсуляция Наследование Полиморфизм Абстракция данных

Паттерны Основные шаблоны (Fundamental) Порождающие шаблоны проектирования (Creational) Структурные шаблоны (Structural) Поведенческие шаблоны (Behavioral) Шаблоны параллельного программирования (Concurrency) MVC Enterprise И тд.

Основные шаблоны (Fundamental) Delegation pattern/Шаблон делегирования Functional design/Шаблон функционального дизайна Immutable/Неизменяемый объект Interface Property Container

Порождающие шаблоны проектирования (Creational) Abstract Factory Builder Factory Method Lazy initialization Multiton Object Pool Prototype Resource acquisition is initialization (RAII) Singleton

Abstract Factory abstract class AbstractFactory { public abstract AbstractProductA CreateProductA(); public abstract AbstractProductB CreateProductB(); } class ConcreteFactory1 : AbstractFactory { public override AbstractProductA CreateProductA() { return new ProductA1(); } public override AbstractProductB CreateProductB() { return new ProductB1(); } abstract class AbstractProductB { public abstract void Interact(AbstractProductA a); } class Client { private AbstractProductA abstractProductA; private AbstractProductB abstractProductB; public Client(AbstractFactory factory) { abstractProductB = factory.CreateProductB(); abstractProductA = factory.CreateProductA(); } public void Run() { abstractProductB.Interact(abstractProductA); } public static void Main() { AbstractFactory factory1 = new ConcreteFactory1(); Client c1 = new Client(factory1); c1.Run(); }

Abstract Factory

Factory Method using System; class MainApp { static void Main() { Creator[] creators = new Creator[2]; creators[0] = new ConcreteCreatorA(); creators[1] = new ConcreteCreatorB(); foreach(Creator creator in creators) { Product product = creator.FactoryMethod(); Console.WriteLine("Created {0}", product.GetType().Name); } // Wait for user Console.Read(); } abstract class Product{ } class ConcreteProductA : Product { } class ConcreteProductB : Product { } abstract class Creator { public abstract Product FactoryMethod(); } class ConcreteCreatorA : Creator { public override Product FactoryMethod() { return new ConcreteProductA(); } class ConcreteCreatorB : Creator { public override Product FactoryMethod() { return new ConcreteProductB(); }

Factory Method

Builder abstract class Builder { public abstract void BuildPartA(); public abstract void BuildPartB(); public abstract Product GetResult(); } class ConcreteBuilder1 : Builder { private readonly Product product = new Product(); public override void BuildPartA() { product.Add("PartA"); } public override void BuildPartB() { product.Add("PartB"); } public override Product GetResult() { return product; } }

Builder