设计模式——装饰者(Decorator)模式DEMO——游戏角色的装饰者模式实现
程序员文章站
2022-03-10 09:05:24
问题描述游戏中,角色Character可以有属性attack, defence,可以有装备weapen, armour,可以对属性造成影响,它们可以是类的属性;可以随时变成巨人gigantize,可以变狂暴furious,都可以对attack和defence形成影响,它们可以形成装饰。解决方案参考文章......
问题描述
游戏中,角色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{
@Test
public 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{
@Override
public void weapen() {
System.out.println("ConcreteCharacter+weapen");
}
@Override
public 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;
@Override
public void weapen() {
this.character.weapen();
}
@Override
public void armour() {
this.character.armour();
}
}
class Person extends Decorator {
public Person(Character character) {
super(character);
}
@Override
public void weapen() {
super.weapen();
System.out.println("Person+weapen");
}
@Override
public 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");
}
@Override
public void weapen() {
super.weapen();
System.out.println("Gigantize+weapen");
}
@Override
public void armour() {
super.armour();
System.out.println("Gigantize+armour");
}
}
运行结果
参考文章
本文地址:https://blog.csdn.net/weixin_43272781/article/details/109809629
上一篇: Android实现图片设置圆角形式
下一篇: laravel seeder 数据填充
推荐阅读
-
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
-
解析C#设计模式编程中的装饰者模式
-
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
-
设计模式笔记3:装饰者模式(Decorator Pattern)
-
Java设计模式——装饰者模式(Decorator Pattern)
-
设计模式之(三)——装饰者模式(Decorator Pattern)
-
设计模式(三)装饰者模式(Decorator)
-
node.js实现的装饰者模式示例
-
设计模式——装饰者(Decorator)模式DEMO——游戏角色的装饰者模式实现
-
Symfony2中的设计模式装饰者模式,symfony2设计模式