Es geht dabei um folgendes Entwurfsmodell-Brücke:
Der Code ist von diesem tutorial http://www.journaldev.com/1491/bridge-design-pattern-java
da dieser aber den code auf Bildern hat, füge ich den code hier ein, um ihn schneller zu kopieren.
Problem ist folgendes. Java-Dokumentation sagt: ist kein Konstrukter angegeben wird der default genommen. lösche ich aber bei shape.java, Pentagon.java, Triangel.java die konstruktoren raus. bekomme ich Fehlermeldungen. Kann mir jemand erklären, warum hier nicht das aus der Java Dokumentation gilt?
BridgePattern.java
public class BridgePattern {
public static void main(String[] args) {
Shape tri = new Triangle(new RedColor());
tri.applyColor();
Shape pent = new Pentagon(new GreenColor());
pent.applyColor();
}
}
Color.java
public interface Color {
public void applyColor();
}
GreenColor.java
public class GreenColor implements Color{
public void applyColor(){
System.out.println("green.");
}
}
Pentagon.java
public class Pentagon extends Shape{
public Pentagon(Color c) {
super(c);
}
@Override
public void applyColor() {
System.out.print("Pentagon filled with color ");
color.applyColor();
}
}
RedColor.java
public class RedColor implements Color{
public void applyColor(){
System.out.println("red.");
}
}
Shape.java
public abstract class Shape {
//Composition - implementor
protected Color color;
//constructor with implementor as input argument
public Shape(Color c){
this.color=c;
}
abstract public void applyColor();
}
Triangle.java
public class Triangle extends Shape{
public Triangle(Color c) {
super(c);
}
@Override
public void applyColor() {
System.out.print("Triangle filled with color ");
color.applyColor();
}
}