重学设计模式之装饰者模式

开发 架构
今天面试被刷了,为啥呀?有什么问题没有回答好吗?

[[354887]]

本文转载自微信公众号「码个蛋」,作者陈宇明 。转载本文请联系码个蛋公众号。 

 

代码

抽象基类

  1. public abstract class 英雄 { 
  2.   public abstract int 攻击() 
  3.   public abstract int 冷却() 
  4.    ........ 

实现基类

  1. public class 李白 extends 英雄 { 
  2.    @Override 
  3.    public int 冷却(){ 
  4.       return 5; 
  5.   } 
  6.    ........ 

Buff 抽象类

  1. public abstract Buff extends 英雄 { 
  2.    public abstract int 攻击() 
  3.   public abstract int 冷却() 
  4.    ........ 

不同 Buff 的实现类

  1. public 红buff extends Buff { 
  2.  
  3.    private 英雄 英雄; 
  4.    public 红buff(英雄 英雄){ 
  5.         this.英雄 = 英雄; 
  6.     } 
  7.      @Override 
  8.    public int 攻击() { 
  9.      return 英雄.攻击() + 红buff额外攻击; 
  10.    } 
  11.    ......... 
  12.   
  13. public 蓝buff extends Buff { 
  14.  
  15.    private 英雄 英雄; 
  16.    public 蓝buff(英雄 英雄){ 
  17.         this.英雄 = 英雄; 
  18.     } 
  19.  
  20.     @Override 
  21.    public int 冷却() { 
  22.      return 英雄.冷却()  + 蓝buff额外减少的冷却值; 
  23.    } 
  24.    ......... 
  25.  

客户端

  1. public class Client { 
  2.     public static void main(String[] args) { 
  3.         // 没有buff的英雄 
  4.         英雄 无buff李白 = new 李白(); 
  5.         
  6.         // 打了红 
  7.         红buff 红buff李白 = new 红buff(无buff李白); 
  8.  
  9.         // 再来个篮 
  10.         篮buff 红蓝buff李白 = new 篮buff(红buff李白); 
  11.  
  12.     } 

注意:以上代码块用中文编写类名、变量名是为了让大家更好的理解,在实战过程中记得替换成相对应的英文。

总结

出自《Head first 设计模式》

 

责任编辑:武晓燕 来源: 码个蛋
相关推荐

2023-09-04 13:14:00

装饰器设计模式

2023-12-13 13:28:16

装饰器模式Python设计模式

2022-03-25 11:01:28

Golang装饰模式Go 语言

2021-01-21 05:34:14

设计模式建造者

2021-07-08 11:28:43

观察者模式设计

2012-05-16 17:15:04

Java设计模式

2010-05-06 08:44:37

调解者模式

2022-11-26 00:00:06

装饰者模式Component

2022-01-19 08:21:12

设计装饰器模式

2021-10-26 00:21:19

设计模式建造者

2020-11-05 09:38:07

中介者模式

2020-10-20 13:33:00

建造者模式

2024-02-23 12:11:53

装饰器模式对象

2020-08-21 07:23:50

工厂模式设计

2020-10-26 08:45:39

观察者模式

2021-06-09 08:53:34

设计模式策略模式工厂模式

2012-02-29 09:41:14

JavaScript

2015-09-08 13:39:10

JavaScript设计模式

2021-06-29 08:54:23

设计模式代理模式远程代理

2012-01-13 15:59:07

点赞
收藏

51CTO技术栈公众号