Course Description
The essence and basic structure of a software design solution may be repeated many times, even though the realisation is different in each case. Patterns offer a technique for capturing such recurrence, allowing design experience to be understood, distilled and shared. The Pattern-Based Software Development in Java course introduces patterns from the ground up, presenting principles as well as concrete examples. It develops understanding through lectures, discussion and hands-on labs, which reinforce the concepts by putting them into practice.
Target Student:
The course is suitable for software developers familiar with object-oriented principles and practices. Programming experience in Java is assumed, and familiarity with UML is beneficial.
Prerequisites:
- Be proficient in programming using the Java programming language
Delivery Method: Instructor led, group-paced, classroom-delivery learning model with structured hands-on activities.
The training course combines lectures with practical exercises that help the delegates to put what they have learned on the training course into practice. The exercises specifically build on what has been recently taught and are built up as the training course progresses.
Performance-Based Objectives
At the end of this training course, students should be able to:
- Understand what does and does not go to make up a pattern
- Understand the beneficial role of patterns in all aspects of development
- Learn and use common patterns for object-oriented and large-scale design
- Appreciate patterns from the strategic level down to idiomatic examples in Java
Course Content
Software Architecture
- Defining architecture
- Dependencies
- Stability and change
- Patterns
2. Core Pattern Concepts
- Patterns in software architecture
- Pattern anatomy
- Role of patterns
- Essential pattern form elements
- Common pattern resources
3. Introductory Pattern Examples
- General design patterns in OO
- The Composite pattern
- The Proxy pattern
- Patterns beyond objects
4. Combining Patterns
- Pattern catalogues
- Pattern communities
- Classes and patterns in JUnit
- From individual to multiple patterns
- The Visitor pattern
- Pattern stories and languages
5. Pattern Context Dependency
- Context sensitivity
- The Client Proxy pattern
- Strategic and tactical patterns
- Idioms
- The Immutable Value pattern
- The Combined Method pattern
- The Data Transfer Object (DTO) pattern
6. Patterns for Decoupling
- The Layers pattern and variations
- The Fragile Base Class problem
- The Explicit Interface pattern
- The Separated Interface pattern
- The Bridge pattern
|
7. Patterns for Adaptation
- The Object Adapter pattern
- The Class Adapter pattern
- Wrapped Adapter pattern
- The Decorator pattern
- The Template Method pattern
- The Facade pattern
8. Patterns for Object Management
- The Factory Method pattern
- The Disposal Method pattern
- The Manager pattern
- The Leasing pattern
- The Evictor pattern
9. Patterns for Pluggability
- The Strategy pattern
- The Interceptor pattern
- The Null Object pattern
- The Context Object pattern
- The Mock Object pattern
- The Command pattern
- The Command Processor pattern
- The Block pattern
10. Patterns for Iteration
- The Iterator pattern
- The Enumeration Method pattern
- The Collecting Parameter pattern
- The Batch Method pattern
- The Batch Iterator pattern
11. Patterns for Object Lifecycles
- Modal Behaviour
- The Objects for States (State) pattern
- The Methods for States pattern
- The Collections for States pattern
12. Patterns for Notification
- Event flow
- The Observer pattern
- The Model?View?Controller (MVC) pattern
- The Event Channel pattern
- The Pipes and Filters pattern
13. Pattern Pitfalls
- Common pitfalls
- Pattern applicability and quality
- Dysfunctional patterns and applications
- The Getters and Setters 'pattern'
- The Singleton pattern (and avoiding it)
|