欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程语言 > asp.net >内容正文

asp.net

设计模式——装饰者(decorator)模式demo——游戏角色的装饰者模式实现 -ag凯发k8国际

发布时间:2024/10/5 asp.net 2 豆豆
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——游戏角色的装饰者模式实现的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图