上面叙述了一些可能性的设计,都不是很好,下面看看如何将装饰者模式融入:
首先是装备的超类
package com.zhy.pattern.decorator;
/**
-
装备的接口
-
@author zhy
*/
public interface IEquip
{
/**
-
计算攻击力
-
@return
*/
public int caculateAttack();
/**
-
装备的描述
-
@return
*/
public String description();
}
然后分别是武器、戒指、护腕、鞋子
package com.zhy.pattern.decorator;
/**
-
武器
-
攻击力20
-
@author zhy
*/
public class ArmEquip implements IEquip
{
@Override
public int caculateAttack()
{
return 20;
}
@Override
public String description()
{
return “屠龙刀”;
}
}
package com.zhy.pattern.decorator;
/**
-
戒指
-
攻击力 5
-
@author zhy
*/
public class RingEquip implements IEquip
{
@Override
public int caculateAttack()
{
return 5;
}
@Override
public String description()
{
return “圣战戒指”;
}
}
package com.zhy.pattern.decorator;
/**
-
护腕
-
攻击力 5
-
@author zhy
*/
public class WristEquip implements IEquip
{
@Override
public int caculateAttack()
{
return 5;
}
@Override
public String description()
{
return “圣战护腕”;
}
}
package com.zhy.pattern.decorator;
/**
-
鞋子
-
攻击力 5
-
@author zhy
*/
public class ShoeEquip implements IEquip
{
@Override
public int caculateAttack()
{
return 5;
}
@Override
public String description()
{
return “圣战靴子”;
}
}
接下来当然是装饰品,宝石了,首先超类
package com.zhy.pattern.decorator;
/**
-
装饰品的接口
-
@author zhy
*/
public interface IEquipDecorator extends IEquip
{
}
下来蓝宝石、黄宝石、红宝石
package com.zhy.pattern.decorator;
/**
-
蓝宝石装饰品
-
每颗攻击力+5
-
@author zhy
*/
public class BlueGemDecorator implements IEquipDecorator
{
/**
- 每个装饰品维护一个装备
*/
private IEquip equip;
public BlueGemDecorator(IEquip equip)
{
this.equip = equip;
}
@Override
public int caculateAttack()
{
return 5 + equip.caculateAttack();
}
@Override
public String description()
{
return equip.description() + “+ 蓝宝石”;
}
}
package com.zhy.pattern.decorator;
/**
-
黄宝石装饰品
-
每颗攻击力+10
-
@author zhy
*/
public class YellowGemDecorator implements IEquipDecorator
{
/**
- 每个装饰品维护一个装备
*/
private IEquip equip;
public YellowGemDecorator(IEquip equip)
{
this.equip = equip;
}
@Override
public int caculateAttack()
{
return 10 + equip.caculateAttack();
}
@Override
public String description()
{
return equip.description() + “+ 黄宝石”;
}
}
package com.zhy.pattern.decorator;
/**
-
红宝石装饰品 每颗攻击力+15
-
@author zhy
*/
public class RedGemDecorator implements IEquipDecorator
{
/**
- 每个装饰品维护一个装备
*/
private IEquip equip;
最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
下面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题全套解析,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,下面只是以图片的形式给大家展示一部分。
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
{
/**
- 每个装饰品维护一个装备
*/
private IEquip equip;
最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
下面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题全套解析,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,下面只是以图片的形式给大家展示一部分。
[外链图片转存中…(img-C7tC7e7t-1715393630150)]
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
[外链图片转存中…(img-j9bux9dt-1715393630152)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!