Library class je jednoduchým návrhovým vzorem, jehož cílem je vytvoření obálky na statické metody podobného účelu. Příkladem mohou být knihovní třídy jazyků zabývající se elementární matematikou, například třída java.lang.Math v Javě. Protože jsou všechny metody statické, tak nemá smysl umožňovat ani dědění, ani tvorbu instancí, proto je třída finální a má soukromý konstruktor.
Kód
/**
* Ukazkova trida pro vzor Library class
* Trida obsahuje metody pro elementarni matematiku
* @author Pavel Micka
*/
public final class MyMath {
/**
* Soukromy konstruktor - nepujde vytvaret instance
*/
private MyMath() {
}
public static int gcd(int a, int b){
if(a < 1 || b < 1) throw new IllegalArgumentException("a nebo b je mensi nez 1");
while(b != 0){
int tmp = a;
a = b;
b = tmp % b;
}
return a;
}
/**
* Resi kvadratickou rovnici o jedne nezname ve tvaru
* ax^2 + bx + c = 0
* @param a
* @param b
* @param c
* @return pole realnych korenu, @null - pokud nema rovnice reseni v oboru
* realnych cisel
*/
public static double[] solveQuadraticEquation(double a, double b, double c){
double d = b*b - 4*a*c; //diskriminant
System.out.println(d);
if(d < 0){
return null;
}else if (d == 0){
double[] result = {-b/2*a};
return result;
}else{
double[] result = {(-b + Math.sqrt(d))/(2*a), (-b - Math.sqrt(d))/(2*a)};
return result;
}
}
}