Osnova

Příklady na návrhové vzory

a = 10;
b = a;
c = b + 1;
print c;

interface A {
    void f(D d);
}
 
class B implements A {
    public void f(D d) {
        d.g(this);
    }
}
 
class C implements A {
    public void f(D d) {
        d.h(this);
    }
}
 
interface D {
    void g(B b);
    void h(C c);
}

class List {
    Chunk first;
 
    /* kod */
}
 
class Chunk {
    int[] contents = new int[10];
    int length;
    Chunk next;
 
    /* kod */
}
 
class Node {
    int contents;
    Node next;
 
    /* kod */
}
 
class Pair {
    int first;
    int second;
    Pair next;
 
    /* kod */
}

class Cell {
    int contents;
 
    void set(int c) { contents = c; }
    int get() { return contents; }
}

begin
  a = 8
  b = 9
  r = 0
  while a > 0 do begin
    r = r + b
    a = a – 1
  end
end

void f(Vehicle v) {
    if (v instanceof Car) v.g();
    else v.h();
}

class InfiniteArray {
    /* atributy */
    void set(int index, int value) { /* kod */ }
    int get(int index) { /* kod */ }
}

interface Zajic {
    void vstavej();
    void spi();
}
 
class Bob implements Zajic {
    public void vstavej() { /* kod */ }
    public void spi() { /* kod */ }
}
 
class Bobek implements Zajic {
    public void vstavej() { /* kod */ }
    public void spi() { /* kod */ }
}
 
class Vecernicek {
    void zacni(Zajic z) {
        if (z instanceof Bob) z.vstavej();
        if (z instanceof Bobek) z.spi();
    }
}

class Fraction {
    int nominator, denominator;
 
    Fraction(int n, int d) {
        nominator = n;
        denominator = d;
    }
 
    Fraction times(Fraction f) {
        return new Fraction( nominator * f.nominator,
                         denominator * f.denominator);
    }
}

a = 10;
b = a;
c = b + 1;
print c;

interface A {
    B getB();
    C getC();
}
 
interface B {}
 
interface C {}
 
class D implements B {}
class E implements B {}
 
class F implements C {}
class G implements C {}
 
class H implements A {
    public B getB() {
        return new D();
    }
 
    public C getC() {
        return new F();
    }
}
 
class I implements A {
    public B getB() {
        return new E();
    }
 
    public C getC() {
        return new G();
    }
}
 
class J {
    A a = new H();
 
    void h() {
        a = new H();
    }
 
    void i() {
        a = new I();
    }
 
    A getA() {
        return a;
    }
}

interface Number {
    int getReal();
    int getImaginary();
}
 
class Real implements Number {
    int value;
 
    Real(int v) {
        value = v;
    }
 
    public int getReal() {
        return value;
    }
 
    public int getImaginary() {
        return 0;
    }
}
 
class Complex implements Number {
    int re, im;
 
    Complex(int r, int i) {
        re = r;
        im = i;
    }
 
    public int getReal() {
        return re;
    }
 
    public int getImaginary() {
        return im;
    }
}

Connection con = DriverManager.getConnection
    ("jdbc:myDriver:wombat","myLogin","myPassword");
Statement stmt = con.createStatement();

class Sorter {    
    static void bubbleSort(int[] array) {
        /* kod */
    }
 
    static void quickSort(int[] array) {
        /* kod */
    }
 
    static void heapSort(int[] array) {
        /* kod */
    }
 
    Sort s = new BubbleSort();
 
    void setPreferredSortType(int type) {
        if (type == 1) s = new BubbleSort();
        if (type == 2) s = new QuickSort();
        if (type == 3) s = new HeapSort();
    }
 
    void sort(int[] array) {
        s.sort(array);
    }
}
 
interface Sort {
    void sort(int[] array);
}
 
class BubbleSort implements Sort {
    public void sort(int[] array) {
        Sorter.bubbleSort(array);
    }
}
 
class QuickSort implements Sort {
    public void sort(int[] array) {
        Sorter.quickSort(array);
    }
}
 
class HeapSort implements Sort {
    public void sort(int[] array) {
        Sorter.heapSort(array);
    }
}

class Triangle {
    TriangleState s;
 
    void visit(TriangleVisitor v) { /* … */ }
 
    /* ... */
}
 
interface TriangleVisitor {
    void visitRectangular(Triangle t);
    void visitObtuse(Triangle t);
    void visitAcute(Triangle t);
}