public class Rectangle { private final int a; private final int b; public Rectangle(int a, int b) { this.a = a; this.b = b; } // první dvě tovární metody vytváří novou instanci se změnou jednoho rozměru public Rectangle setA(int newA) { return new Rectangle(newA, this.b); } public Rectangle setB(int newB) { return new Rectangle(this.a, newB); } // další tovární metoda vytváří obdélník s násobenými rozměry public Rectangle grow(int factor) { return new Rectangle(this.a * factor, this.b * factor); } }