我将两个设计模式Observer和Composite结合起来,一切都很顺利。我的问题是关于类图。我把我班级图的图片放在这里
在这里我把我的主要
public class Compito24Febbraio2017 {
public static void main(String[] args) {
ConcreteObserver o = new ConcreteObserver();
Composite c1 = new Composite ("c1",o);
Leaf l1 = new Leaf("l1",o);
Leaf l2 = new Leaf("l2",o);
c1.add(l1);
c1.add(l2);
c1.setState(5);
l1.setState(4);
o.printAllState();
}
}
所以问题很简单,也许我在这个问题上放了太多东西; 这与Observer和Component的关联好吗? (因为客户端有这两个类的引用)。 也许我应该使用依赖关系? (因为客户端创建了这两个类的某个子类的等值)。或者我应该将客户端与ConcreteObserver,Composite和Leaf类链接起来?
答案 0 :(得分:1)
答案 1 :(得分:0)
有一点,Component和ConcreteObserver之间的链接应该是另一个方向吗? 如果我看Observer pattern,我觉得链接是另一个方向。
答案 2 :(得分:0)
所以,如果我理解,请告诉我,这是一个装饰模式,这是主要的
public class DecoratorPatternDemo {
public static void main(String[] args) {
Shape circle = new Circle();
Shape redCircle = new RedShapeDecorator(new Circle());
Shape redRectangle = new RedShapeDecorator(new Rectangle());
System.out.println("Circle with normal border");
circle.draw();
System.out.println("\nCircle of red border");
redCircle.draw();
System.out.println("\nRectangle of red border");
redRectangle.draw();
}
}
这里客户端只与ShapeDecorator有关联,因为在main中,客户端创建一个新的RedShapeDecorator对象,它是ShapeDecorator的子类。客户端还创建一个Shape对象,但客户端不需要与Shape关联,因为ShapeDecorator类已经具有Shape的引用。我是对的吗?