2020-07-31

无废话设计模式(7)结构型模式

0-前言

  装饰模式定义:动态给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。

1-实现

1-1、易看的UML图:

 

 

 

1-2、代码实现:

//1、演员类(component,直接实现,未抽取父类,可抽取父类)class Actor{ public void Act() {  System.out.println("演员开始表演了"); }}//2、Decorator(装饰抽象类)class Stylist extends Actor{ protected Actor actor; public void MakeActor(Actor _actor) {  this.actor = _actor; } @Override public void Act() {  if (actor !=null)  {   actor.Act();  } }}//2-1、ConcreteComponentA(具体装饰者A--古装造型师)class AncientStylist extends Stylist{ private String State; @Override public void Act() {  System.out.println("古装造型师给演员化妆了");  State = "演员状态挺好的";  System.out.println(State);  super.Act(); }}//2-2、ConcreteComponentB(具体装饰者B)class ModernStylist extends Stylist{ public void AddBehaver() {  System.out.println("给演员打了个气"); } @Override public void Act() {  System.out.println("现代造型师给演员化妆了");  AddBehaver();  super.Act(); }

客户端:

  Actor actor = new Actor();  AncientStylist ancientStylist =new AncientStylist();  ModernStylist modernStylist = new ModernStylist();  ancientStylist.MakeActor(actor);  ancientStylist.Act();  modernStylist.MakeActor(actor);  modernStylist.Act();

 

运行结果:

 

 

2、应用场景简单总结

1、当需要以不影响其他对象为前提实现动态、透明地给单个对象添加职责时;

2、当需要将对象的某些职责进行撤销操作时;

3、当不能用生成子类的方法进行当前系统的扩充时;

 

无废话设计模式(7)结构型模式店铺运营活动产品线规划大森林跨境知道每周资源分享!资源干货包(实用模板+提升排名技巧+欧洲引流渠道)Shopify+Facebook广告教程亚马逊内测APP弹窗功能"劫持"用户,第三方卖家凉凉?2017年端午节去深圳西冲玩怎么样?去西冲玩什么?2017年深圳世界之窗国际啤酒节是什么时候?2017深圳端午节哪里有赛龙舟看?

No comments:

Post a Comment