Tervezési minták (Design Patterns) C# .NET
4 nap
Angol vagy magyar
számítógép szükséges
nincs
Cél
A tervezési minták újrafelhasználható megoldást adnak olyan kihívásokra, amelyekkel a fejlesztők folyamatosan szembesülnek. Ahelyett, hogy újrafeltalálnánk a kereket, meg kell ismernünk azokat a bizonyított és tesztelt megoldásokat, amelyek segítségével a szoftvereink megbízhatóan és rugalmasan kezelhetőek. Ez a tanfolyam bevezetést ad a tervezési minták világába és áttekinti a 16 leggyakrabban használt objektum orientált tervezési mintát, amelyek gyorsabbá és egyszerűbbé teszik a fejlesztést. Bevezetjük az objektum orientált programozás alapjait a GRASP mintákon keresztül, majd áttekintjük a közismert SOLID elveket. Analizáljuk a leghasznosabb tervezési mintákat a klasszikus GoF könyv alapján, és a SOLID elveket is a minták kontextusában taglaljuk. A tervezési mintákat példa kódokon keresztül mutatjuk be, amely segíti minták valós helyzetekben történő felhasználását.
A tanfolyamon több feladatot is megoldanak a résztvevők, amelyek segítik a tervezési minták minél jobb megértését és felhasználását.
A legfontosabb értéke ennek a tanfolyamnak nem pusztán a tervezési minták világának megismertetése, hanem segítséget ad a fejlesztőknek abban, hogy miként kell objektum orientáltan gondolkodni, valamint segít a tervezési döntések tudatossá tételében.
A tanfolyam programozási nyelve a c#.
Résztvevők
Architektek, szoftverfejlesztők, akik minimum 3 éves C# tapasztalattal rendelkeznek, ill. évek óta járatosak más programozási nyelvekben (számos c++ programozó vett már részt ezen a kurzuson).
Tartalom
A kurzus alapvetően C# .NET fejlesztők számára készült, akik szükségét érzik az objektum orientált tervezés elsajátításának.
Modulok
GRASP Patterns
- GRASP: General responsibility assignment software patterns (or principles). Iránymutatások arra nézve, hogy miként lehet felelősségi köröket rendelni osztályokhoz és objektumokhoz az objektum orientált tervezésben.
- Ebben a modulban a résztvevők betekintést kapnak az objektum orientált programozás alap elveibe.
- Kulcs témák: Information Expert, Creator, Cohesion, Coupling, Controller, Polymorphism, Indirection, Protected Variations and Pure Fabrication.
SOLID Principles
- A SOLID egy mozaikszó, amely mögött 5 tervezési alapelvet foglal magába, amelyek célja, hogy áttekinthető, rugalmas és könnyen karbantartható kódot írjunk. Megvizsgáljuk, hogy ez az 5 elv miként segíti a szoftverek tervezését és miképpen tanulmányozhatjuk a tervezés minőségét ezen elvek alapján.
- Kulcs témák: Single Responsibility, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation, Dependency Inversion.
Bridge pattern
- A Bridge pattern bevezetése egy Drawing Editor példán keresztül. A Bridge pattern részletezése. Példák a .NET keretrendszerből.
- Gyakorlat: Multi-adatbázis alkalmazás refaktorálása a Bridge pattern alapján.
Template Method
- A Template Method pattern részletesen. Példák a .NET keretrendszerből.
- Gyakorlat: Az előző példa refaktorálása a Template Method pattern alapján a Bridge pattern mindkét oldalán, eliminálva a duplikált kódokat.
- Példa kód: Sorbarendezés IComparable interfésszel, esemény vezérlés .NET-ben, weboldali input validálás Layer Supertype és Template method pattern-ek segítségével.
Strategy
- A Strategy pattern vizsgálata. Példák a .NET keretrendszerből.
- Példa kód: Sorbarendezés IComparer interfésszel, user input validáció, Multi-Step Etl kezelés Strategy pattern segítségével.
Factory Method
- A Factory Method pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: különböző típusú factory-k.
Abstract Factory
- Az Abstract Factory pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: Concrete Factories, Abstract Database object Factory
Decorator
- A Decorator pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: kollekció felelősségek megváltoztatása a Decorator pattern segítségével.
- Gyakorlat: rossz Visual Decorator refaktorálása.
Adapter
- Az Adapter pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: IDataReader for bulk sql server insert. Tree view kontroll adapter segítségével. Adapter és az IListSource.
Iterator
- Az Iterator pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: külső iterátor készítése rekurzív struktúrához saját stack segítségével, rekurzív iterátor készítése C# yield támogatással, generátorok és transzformátorok készítése yield segítségével, where szűrők készítése. Belső iterátor készítése láncolt listához. Verziózott iterátor koncepció.
- Gyakorlat: külső iterátor készítése láncolt listához.
Composite
- A Composite pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: file rendszer szimuláció Composite pattern alapján. Szülő referencia kezelése. Memória igény csökkentése adat könyvtárak segítségével.
- Gyakorlat: Méret tulajdonság felvétele kompozit struktúrához.
Visitor
- A Visitor pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: File Composite kiterjesztése a Visitor segítségével, Expression visitor és a C# dinamikus támogatás. Expression AST transzformáció Visitor segítségével. Kód vizsgálat és transzformáció Roslyn segítségével.
Singleton
- A Singleton (anti)pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: Egyszerű singleton, szálbiztos singleton, BeforeFieldInit, komplex üzleti szabályok modellezése singleton és más tervezési mintákkal.
Command
- A Command pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: undo-redo fa editor implementálása.
Observer
- Az Observer pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: INotifyPropertyChanged implementáció.
Chain of Responsibility
- A Chain of Responsibility pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: Chain of Responsibility variációk, Loan processing, Middlewares in OWIN, Handlers in WebAPI.
Builder
- A Builder pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: Fluent style builder-ek. CodeDom. Állapotgép létrehozása fluent builder-ek segítségével.
State
- A State pattern részletesen. Példák a .NET keretrendszerből.
- Példa kód: CSV reader.
Other Patterns
- Prototype, Facade, Flyweight, Proxy, Interpreter, Mediator, Memento.