Home > Articles > Programming

  • Print
  • + Share This
This chapter is from the book

This chapter is from the book

Why Design Patterns?

A design pattern is a pattern—a way to pursue an intent—that uses classes and their methods in an object-oriented language. Developers often start thinking about design after learning a programming language and writing code for a while. You might notice that someone else's code seems simpler and works better than yours does, and you might wonder how that person achieves this simplicity. Design patterns are a level up from code and typically show how to achieve a goal, using one to ten classes. Other people have figured out how to program effectively in object-oriented languages. If you want to become a powerful Java programmer, you should study design patterns, especially those in Design Patterns.

TABLE 1.1: Books Conveying Software Development Wisdom in the Form of Patterns

PATTERN CATEGORY

TITLE

AUTHORS /EDITORS

SOFTWARE PROCESS

Process Patterns: Building Large-Scale Systems Using Object Technology

Scott W. Ambler

 

More Process Patterns: Delivering Large-Scale Systems Using Object Technology

Scott W. Ambler

OBJECT MODELING

Analysis Patterns: Reusable Object Models

Martin Fowler

 

Object Models: Strategies, Patterns and Applications

Peter Coad

Mark Mayfield

David North

ARCHITECTURE

CORBA Design Patterns

Thomas J. Mowbray

Raphael C. Malveau

 

Core J2EE? Patterns: Best Practices and Design Strategies

Deepak Alur

John Crupi

Dan Malks

 

Pattern-Oriented Software _Architecture, Volume 1: A System of Patterns

Frank Buschmann

Regine Meunier

Hans Rohnert

Peter Sommerlad

Michael Stal

 

Pattern-Oriented Software _Architecture, Volume 2: Patterns for Concurrent and Networked Objects

Douglas Schmidt

Michael Stal

Hans Rohnert

Frank Buschmann

DESIGN

AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis

William J. Brown

Raphael C. Malveau

Hays W. McCormick III

Thomas J. Mowbray

 

Applying UML and Patterns, Second Edition

Craig Larman

 

Concurrent Programming in Java?, _Second Edition: Design Principles and Patterns

Doug Lea

 

Design Patterns

Erich Gamma

Richard Helm

Ralph Johnson

John Vlissides

 

Design Patterns for Object-Oriented Software Development

Wolfgang Pree

 

Pattern Hatching: Design Patterns Applied

John Vlissides

 

SanFranciso? Design Patterns

James Carey

Brent Carlson

Tim Graser

SMALLTALK ORIENTED

The Design _Patterns Smalltalk Co_mpanion

Sherman R. Alpert

Kyle Brown

Bobby Woolf

 

Smalltalk Best _Practice Patterns

Kent Beck

JAVA _ORIENTED

Java? Design _Patterns: A _Tutorial

James W. Cooper

 

Patterns in Java?, _Volume 1

Mark Grand

COMPENDIA

The Pattern Almanac 2000

Linda Rising

 

Pattern Languages of Program Design

James O. Coplien

Douglas C. Schmidt

 

Pattern Languages of Program Design 2

John M. Vlissides

James O. Coplien

Norman Kerth

 

Pattern Languages of Program Design 3

Robert C. Martin

Dirk Riehle

Frank Buschmann

 

Pattern Languages of Program Design 4

Neil Harrison

Brian Foote

Hans Rohnert


Design Patterns describes 23 design patterns—that is, 23 ways of pursuing an intent, using classes and objects in an object-oriented language. These are probably not absolutely the most useful 23 design patterns to know. On the other hand, these patterns are probably among the 100 most useful patterns. Unfortunately, no set of criteria establishes the value of a pattern, and so the identity of the other 77 patterns in the top 100 is a mystery. Fortunately, the authors of Design Patterns chose well, and the patterns they document are certainly worth learning.

GoF

You may have noted the potential confusion between design patterns the topic and Design Patterns the book. To distinguish between the topic and the book title, many speakers and some writers refer to the book as the "Gang of Four" book or the "GoF" book, referring to the number of its authors. In print, this distinction is not so confusing. Accordingly, this book avoids using the term "GoF."

  • + Share This
  • 🔖 Save To Your Account