原创 装饰者设计模式实例(第一次自己写博文,欢迎指正交流)

阅读: 评论:0

原创 装饰者设计模式实例(第一次自己写博文,欢迎指正交流)

原创 装饰者设计模式实例(第一次自己写博文,欢迎指正交流)

以汽车为例子,对汽车进行染色是必须的步骤,但是如果有些车主还喜欢对车把手或者车内部进行不同的染色(这当然是选择性的步骤),那么就非常适合用装饰者设计模式来设计。

设计的代码如下

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 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23