Course - Patterns Of Design
Description of Patterns Of Design
Their high abstraction level let differentiate between main principles of realization from concrete application fields that, in its turn, give a nice possibility not only realize patterns in practice, but also use them as a set of indicators for clear classification of even most difficult tasks.
In this meaning, patters of design are some common language that excludes uncertainty of explanation and significantly speed up development process.
The Patters of Design course will help you to study this universal language in short terms. You will be able clearly classify projecting tasks and precisely describe most suitable solutions. Every pattern is an instrument that will be frequently used in your practice, and you will use all the advantages that can be gained with safe and time-proved solutions.
• C# experience is an advantage
• Visual Studio 2010 experience
Who should attend
Introduction to Patterns of Design GoF. Creational Patterns. Abstract Factory
During the lesson students will get familiar with the general idea of patterns, understand the intent of creational patterns and learn about the Abstract Factory.
Intent, structure and implementation of Builder Pattern. Difference between Builder and Abstract Factory.
The lesson considers the Factory Method pattern. Also students will learn about alternative patterns classifications.
Prototype & Singleton
Prototype & Singleton – are the last among creational patterns. Beside the patterns themselves the lesson also considers the built-in features of C# language that allow using these patterns with great benefits.
Structural Patterns. Adapter & Proxy
Introduction to structural patterns. Differences and similarities between Adapter & Proxy.
Separating abstraction and implementation. Advantages of decomposing the application into different independent layers.
Composite pattern and tree structures.
Principles of dynamic behavior extension. Inheritance vs. decoration.
Layered applications. Facade and common interface patterns.
Flyweight in CLR. Optimization of memory utilization by implementing the Flyweight pattern.
Behavioral Patterns. Chain of Responsibility
Introduction to behavioral patterns. Consecutive requests handling. Chain of Responsibility pattern.
Client, invoker, receiver. Designing an object that is used to represent and encapsulate all information needed to call method at a later time.
Developing the special purpose grammar for solving constantly changing homogeneous tasks
Iteration through the aggregation entity without representing the inner structure and element dependencies.
Designing the cooperation between objects with loose coupling. Reducing dependences between system components.
How to save the particular object state for future usage?
Publish/Subscribe relations. Implementing distributed event handling systems.
State & Strategy
Designing the objects that are able to change their particular state or behavior dynamically, during the program run-time.
Designing the hierarchy of classes that allows to vary the implementation of same behavioral algorithm. NVI concept.
How to change the number of operations that can be done on an object without changing the object itself?
Completing this course, you will be able to:
• Divide complex issues into typical parts, simplify their conception and understanding
• Create object-oriented and easily expandable applications, using ready time-proved solutions
• Get ready to learn wider set of patters that are solutions for complicated tasks of corporate applications design (PoEAA, MS Patterns & Practive)
• Use achieved skills in real-life projects.