设计模式——装饰者(decorator)模式demo——游戏角色的装饰者模式实现 -ag凯发k8国际
ag凯发k8国际
收集整理的这篇文章主要介绍了
设计模式——装饰者(decorator)模式demo——游戏角色的装饰者模式实现
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
游戏中,角色character可以有属性attack, defence,可以有装备weapen, armour,可以对属性造成影响,它们可以是类的属性;可以随时变成巨人gigantize,可以变狂暴furious,都可以对attack和defence形成影响,它们可以形成装饰。
package io.shentuzhigang.demo.design;import org.junit.jupiter.api.test;/*** @author shentuzhigang* @version 1.0.0* @date 2020-11-19 14:22*/public class decoratortest{@testpublic void t(){character person = new concretecharacter();decorator decorator = new gigantize(new person(person));decorator.weapen();decorator.armour();} } interface character {public void weapen();public void armour(); } class concretecharacter implements character{@overridepublic void weapen() {system.out.println("concretecharacter weapen");}@overridepublic void armour() {system.out.println("concretecharacter armour");} } abstract class decorator implements character{private character character;public decorator(character character){this.character = character;}string attack;string defence;@overridepublic void weapen() {this.character.weapen();}@overridepublic void armour() {this.character.armour();} } class person extends decorator {public person(character character) {super(character);}@overridepublic void weapen() {super.weapen();system.out.println("person weapen");}@overridepublic void armour() {super.armour();system.out.println("person armour");} }class gigantize extends decorator {public gigantize(character character) {super(character);}public void furious(){system.out.println("furious");}@overridepublic void weapen() {super.weapen();system.out.println("gigantize weapen");}@overridepublic void armour() {super.armour();system.out.println("gigantize armour");} }
设计模式之装饰者模式(实例 demo)
java设计模式初探之装饰者模式
总结
以上是ag凯发k8国际为你收集整理的设计模式——装饰者(decorator)模式demo——游戏角色的装饰者模式实现的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: 设计模式——装饰者(decorator)