Design Patterns Explained Java Code Examples – Chapter 11: The Abstract Factory Pattern

Chapter 11: The Abstract Factory Pattern
Code Examples

Example 11-1: A Switch to Control Which Driver to Use

TOC

Example 11-2: Using Polymorphism to Solve the Problem

TOC

Example 11-3: Implementation of ResFactory

TOC


Example 11-1: A Switch to Control Which Driver to Use

TOP

// JAVA CODE FRAGMENT
class ApControl {
    . . .
    public void doDraw() {
        . . .
        switch (RESOLUTION) {
            case LOW:
                // use lrdd
            case HIGH:
                // use hrdd
        }
    }
    public void doPrint() {
        . . .
        switch (RESOLUTION) {
            case LOW:
                // use lrpd
            case HIGH:
                // use hrpd
        }
    }
}

Example 11-2: Using Polymorphism to Solve the Problem

TOP

// JAVA CODE FRAGMENT
class ApControl {
    . . .
    public void doDraw() {
        . . .
        myDisplayDriver.draw();
    }
    public void doPrint() {
        . . .
        myPrintDriver.print();
    }
}

Example 11-3: Implementation of ResFactory

TOP

abstract class ResFactory {
    abstract public DisplayDriver getDispDrvr();
    abstract public PrintDriver getPrtDrvr();
}
class LowResFact extends ResFactory {
    public DisplayDriver getDispDrvr() {
        return new LRDD();
    }
    public PrintDriver getPrtDrvr() {
        return new LRPD();
    }
}
class HighResFact extends ResFactory {
    public DisplayDriver getDispDrvr() {
        return new HRDD();
    }
    public PrintDriver getPrtDrvr() {
        return new HRPD();
    }
}