以汽车为例子,对汽车进行染色是必须的步骤,但是如果有些车主还喜欢对车把手或者车内部进行不同的染色(这当然是选择性的步骤),那么就非常适合用装饰者设计模式来设计。
设计的代码如下
package car.paint;
public interface Car {
public void paint(String color);
}
package car.paint;
public class ConcreteCar implements Car {
private String color ;
public void paint(String color) {
// TODO Auto-generated method stub
System.out.println("这是必须做的事情,或者是以前已经完成的事情。" +
"无法更改。n已经把车身刷漆为" + color);
}
}
package car.paint;
public abstract class Decorator {
private Car car;
private String color;
public void paint(String color){
}
public Decorator(Car car) {
super();
this.car = car;
}
}
package car.paint;
public class DoorHandlerDecorator extends Decorator {
public void paint(String color){
System.out.println("有些人喜欢把车把手染色,现在将它染为" + color);
}
public DoorHandlerDecorator(Car car) {
super(car);
// TODO Auto-generated constructor stub
}
}
package car.paint;
public class InsideDecorator extends Decorator {
public void paint(String color){
System.out.println("有些人喜欢把车里面染色,现在将它染为" + color);
}
public InsideDecorator(Car car) {
super(car);
// TODO Auto-generated constructor stub
}
}
package car.paint;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Car car = new ConcreteCar();
car.paint("白色");
//后来发现有些车主还喜欢对车把手和车内部进行颜色的装饰
Decorator decorator = new DoorHandlerDecorator(car);
decorator.paint("红色");
decorator = new InsideDecorator(car);
decorator.paint("紫色");
}
}
转载于:.html
本文发布于:2024-02-02 14:47:13,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170685643444507.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |