Pattern Based Software Development in Java

Understanding design patterns in context, with Kevlin Henney, a hugely respected trainer and speaker across the industry

About The Trainer

Kevlin Henney is a regular columnist for various industry magazines and a well known and popular speaker on topics such OO Design, Patterns, Agile Development and Software architecture at conferences in Europe and North America.

Kevlin currently works as an independent consultant and trainer based in Bristol. He has developed and delivered training courses, consultancy and software across a number of domains ever since getting involved in professional software development in the late 1980s.

Most of Kevlin’s work focuses on software architecture, patterns, development process and programming languages. His work has appeared in several magazines and online publications, including; The Register, Application Development Advisor, Java Report, C++ Report and CUJ. Along with Frank Buschmann and Doug Schmidt, Kevlin is coauthor of A Pattern Language for Distributed Computing and On Patterns and Pattern Languages. He is also editor of the 97 Things Every Programmer Should Know project.

Overview

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.

This course is targeted at intermediate to advanced Java developers looking to move to the “next level”. Delivered by a hugely experienced Java craftsman, the workshop explores the techniques, idioms and tools available to the modern developer and how best to apply them in live situations.

Objectives

  • 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

Outline

Software Architecture

  • Defining architecture
  • Dependencies
  • Stability and change
  • Patterns

Core Pattern Concepts

  • Patterns in software architecture
  • Pattern anatomy
  • Role of patterns
  • Essential pattern form elements
  • Common pattern resources

Introductory Pattern Examples

  • General design patterns in OO
  • The Composite pattern
  • The Proxy pattern
  • Patterns beyond objects

Combining Patterns

  • Pattern catalogues
  • Pattern communities
  • Classes and patterns in JUnit
  • From individual to multiple patterns
  • The Visitor pattern
  • Pattern stories and languages

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

Patterns for Decoupling

  • The Layers pattern and variations
  • The Fragile Base Class problem
  • The Explicit Interface pattern
  • The Separated Interface pattern
  • The Bridge pattern

Patterns for Adaptation

  • The Object Adapter pattern
  • The Class Adapter pattern
  • The Wrapped Adapter pattern
  • The Decorator pattern
  • The Template Method pattern
  • The Facade pattern

Patterns for Object Management

  • The Factory Method pattern
  • The Disposal Method pattern
  • The Manager pattern
  • The Leasing pattern
  • The Evictor pattern

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

Patterns for Iteration

  • The Iterator pattern
  • The Enumeration Method pattern
  • The Collecting Parameter pattern
  • The Batch Method pattern
  • The Batch Iterator pattern

Patterns for Object Lifecycles

  • Modal Behaviour
  • The Objects for States (State) pattern
  • The Methods for States pattern
  • The Collections for States pattern

Patterns for Notification

  • Event flow
  • The Observer pattern
  • The Model–View–Controller (MVC) pattern
  • The Event Channel pattern
  • The Pipes and Filters pattern

Pattern Pitfalls

  • Common pitfalls
  • Pattern applicability and quality
  • Dysfunctional patterns and applications
  • The Getters and Setters ‘pattern’
  • The Singleton pattern (and avoiding it)

Sign up and stay in the loop

Be the first to know about upcoming workshops, courses, talks and events

Learn more

Enlightening look at design patterns and what to consider when applying them. I found Kevlin to be an engaging teacher. I thought the format of the course worked well. I would attend his next course if my boss approved it :)