Farewell to 'Design Techniques'
This final installment of Design Techniques gives
a brief history of the column, tracing its development and
maturation, a topical index of the column's back issues, links to
related discussion forum topics, and a hint of what's to...
Design with static members
In this installment of his Design Techniques
column, Bill Venners discusses the ways in which static fields and
methods, which exist outside of objects, fit in a design that's
object-oriented. (1,500 words)
Design with runtime class information
In this installment of Design Techniques, Bill
gives advice on using runtime class information in Java programs.
He talks about the method area of the JVM and the structure of Java
objects, upcasting and downcasting, polymorphism and...
Design with dynamic extension
In this installment of Design Techniques, Bill
takes a look at a less commonly understood aspect of Java's
architecture: dynamic extension. He discusses the two kinds of
dynamic extension, forName() and class loaders, and
offers...
Designing with interfaces
In this installment of my Design Techniques
column, I describe my process to understanding Java's interface. I
talk about multiple inheritance and the diamond problem,
polymorphism and dynamic binding, separation of interface...
The canonical object idiom
In this installment of the Design Techniques
column, I propose "the canonical object" as a Java idiom. The
article discusses the fundamental services that all objects in
general should offer, shows how objects can offer these...
The 'event generator' idiom
In this installment of the Design Techniques
column, Bill proposes the "event generator" as a Java idiom. The
article provides a background on the concepts of patterns and
idioms, describes the observer pattern, and demonstrates...
Design for thread safety
This installment of the Design Techniques column
gives you design guidelines that pertain to thread safety. It
provides a background on the concept of thread safety and shows
several examples of objects that are and are not...
Designing with exceptions
This installment of the Design Techniques column
discusses design guidelines that pertain to exceptions. It focuses
primarily on how to decide when to use exceptions, and gives
several examples from the Java API that illustrate...
Object finalization and cleanup
This installment of the Design Techniques column
discusses the design guidelines that pertain to the end of an
object's life. Columnist Bill Venners gives an overview of the
rules of garbage collection, discusses finalizers, and...
What's a method to do?
In this installment of the Design Techniques
column, brush up on how -- and why -- to divide a class's
functionality among its methods. Ever the minimalist, Bill Venners
demonstrates how to maximize method cohesion while keeping...
Designing fields and methods
This installment of the Design Techniques column
shows how some fundamental software design techniques, like
avoiding special data values and minimizing method coupling, apply
to Java. (4,000 words)
Designing object initialization
This installment of the Design Techniques column
begins with a quick look at object-design fundamentals, then goes
on to discuss various approaches to designing initializers and
constructors so as to facilitate the proper...
Introduction to "Design Techniques"
This first installment of the new Design
Techniques column introduces the column and discusses the
larger issues involved in designing Java programs. In addition,
we'll examine the software development process in general, describe
the...