Program Design including Patterns

Applications of Concurrency
"Concurrency opens up design possibilities that are impractical in sequential programs. Threads liberate you from the limitations of code that invokes a method ..."
Articles about Java design by Bill Venners
About 20 different articles written by Bill Venners on how to design Java programs. Written between March 98 and April 99.
Assembly Line Example
"This example illustrates the design and implementation of push-based flow systems via an assembly line applet that builds series of ``paintings'' in a style ..."
Canonical Object Idiom by Bill Venners
"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 ..."
Classes and Objects by Bill Venners
"When you set out to design a Java program, you have to create abstractions. You are faced with a problem domain and (with luck) a specification, and you have to..."
Cloning by Bill Venners
"Although the previous chapter covered object initialization in great detail, it didn't quite cover all ways to initialize objects in Java, because it didn't cov..."
Composition and Inheritance by Bill Venners
"Modeling the relationships between types is a fundamental part of the process ofobject-oriented design. This chapter shows you how to model relationships using..."
Composition versus Inheritance by Venners
"In this installment of my Design Techniques column, I analyze the flexibility and performance implications of inheritance and composition, and I give guideline..."
Concurrent Programming in Java...
"This is the supplement to the book Concurrent Programming in Java: Design Principles and Patterns by Doug Lea (ISBN 0-201-69581-2) published by Addison-Wesley ..."
Concurrent Programming in Java
"Book Overview - Concurrency introduces design and programming opportunities and problems not found in sequential OO programming. This book describes some ways ...."
Concurrent Programming In Java
Patterns: Most patterns in this supplement are grouped differently than in the book. The book exposes patterns in the course of discussing principles. Here, they..."
Designing Fields and Methods by Bill Venners
"This installment of the Design Techniques column shows how some fundamental software design techniques, like avoiding special data values and minimizing method..."
Designing for Thread Safety by Bill Venners
"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 ..."
Designing Object Initialization by Bill Venners
"This installment of the Design Techniques column begins with a quick look at object-design fundamentals, then goes on to discuss various approaches to design..."
Designing Objects for Concurrency in Java
"Despite extensive development over many years and significant demonstrated benefits, the object-oriented paradigm remains poorly formalized. Several concurrent..."
Designing with Dynamic Extension by Venners
"In this installment of Design Techniques, I take a look at a less commonly understood aspect of Java's architecture: dynamic extension. I discuss the two kinds..."
Designing with Exceptions by Bill Venners
"This installment of the Design Techniques column discusses design guidelines that pertain to exceptions. It focuses primarily on how to decide when to use..."
Designing with Interfaces by Bill Venners
"In this installment of my Design Techniques column, I describe the process I went through to understand Java's interface. I talk about multiple inheritance and..."
Designing with Runtime Class Information
"In this installment of Design Techniques, I give advice on using runtime class information in Java programs. I talk about the method area of the JVM and the...."
Designing with Static Members by Bill Venners
"In this installment of his Design Techniques column, I discuss the ways in which static fields and methods, which exist outside of objects, fit into ..."
Event Generator Idiom by Bill Venners
"In this installment of the Design Techniques column, I propose the "event generator" as a Java idiom. The article provides a background on the concepts of patt..."
FAQ about Concurrent Programming in Java
"What kind of background do I need to read this book? You need some background in both Java and in OO design, or to be willing to playalong as if you did. I ..."
Farewell to 'Design Techniques' by Venners
"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 ..."
Flexible Java by Bill Venners
"Flexible Java is a book-in-progress that is posted to this website as it is written.The book gives guidelines and idioms that show you how to design Java..."
Guarded Methods
"Guarded methods are those that block if the object is not in a state in which the associated actions can be executed, later proceeding when conditions change...."
Immutability
"The only approach to concurrent object design that always completely by passes the need to synchronize the activities of objects is not to change the objects...."
Implementing Basic Design Patterns in Java
"Interfaces An interface encapsulates a coherent set of services and attributes (broadly, a Role), without explicitly binding this functionality to that of any..."
Introduction to Design Techniques by Venners
"This first installment of the new Design Techniques column introduces the column and discusses the larger issues involved in designing Java programs. In additi..."
Java Design: Building Better Apps and Applets
A presentation by Peter Coad. Read online or download a PowerPoint presentation.
Java Design Corner
"Java Design Corner includes articles, a book (work-in-progress), and discussion form focused onJava design, as well as a list of recommended design books..."
Java Look and Feel Design Guidelines
"Provides essential information for anyone creating cross-platform applications and applets in the Java programming language. Along with design guidelines for ...."
Model-View-Control, Observer and Observable
"The MVC concept has been used in the Smalltalk world for some time, and has now been carried forward into Java. The primary Java tools for implementing MVC are..."
Object Finalization and Cleanup by Venners
"This installment of the Design Techniques column discusses the design guidelines that pertain to the end of an object's life. I give an overview of the rules ..."
Optimistic Methods
"Optimistic methods are those that attempt actions, but rollback state if the actions could have been interfered with by the actions of other threads. After ..."
Packages and Access Levels by Bill Venners
"The process of software design is largely a process of organizing. The previousthree chapters explored the object-oriented ways you can organize a Java progra...."
Parallel Decomposition
"When programming reactive systems, the main performance-related goal is normally availability -- ensuring that services can be accessed even when objects are..."
Patterns in Java
"This presentation is based on a book... Patterns in Java, by Mark Grand..." More than 100 slides discussing the use of patterns in Java program design.
Platinum Paradigm Plus
"PLATINUM Paradigm Plus is a UML-based component modeling tool that enables organizations to successfully design and visualize complex applications."
Representing and Accessing Attributes
"Defining the representation, visibility, mutability, invariants, accessibility, and synchronization properties of attributes is the first step in creating safe..."
RMI - Applying the Factory Pattern to RMI
"A factory, in this context, is a piece of software that implements one of the "factory" design patterns introduced in the book, Design Patterns, Elements of ..."
Softera SoftModeler
"Next Generation Java Modeling Tools. Java design, code generation and reverse engineering are only a mouse click away."
Swing Design Guidelines -- John Zukowski
"Have you ever wondered what the best way to design cross-platform user interfaces with the Swing component set is? Sun recently posted early accessto a new boo..."
Using Design Patterns to Simplify Printing ...
From IBM, "We will start with the relatively primitive print methods that Java provides and then examine object-oriented programming techniques. These technique..."
What's a Method to Do? by Bill Venners
"In this installment of the Design Techniques column, I brush up on how -- and why -- to divide a class's functionality among its methods. I demonstrate how to...."
Your Own Java Layout Manager by Cory
"...explains how I designed a layout manager called StackLayout and provides useful tips on designing your own layout manager. StackLayout stacks display comp..."