Skip to content

Commit dbe4f93

Browse files
committed
decorator added
1 parent 0aafa61 commit dbe4f93

File tree

15 files changed

+207
-0
lines changed

15 files changed

+207
-0
lines changed

decorator/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Decorator
2+
This is repository of http://androidcode.pl blog. It shows uses of Decorator in Android. It is a part of Design Patterns - Decorator post in the blog.

decorator/example/Main.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
public class Main {
2+
3+
public static void main() {
4+
5+
Avatar john = new Knight();
6+
Avatar katy = new Druid();
7+
8+
john = new Fighter(john);
9+
john = new Defender(john);
10+
katy = new Magician(katy);
11+
12+
john.fight();
13+
katy.fight();
14+
//catch the result of the fight
15+
}
16+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
public abstract class Avatar {
2+
3+
public abstract String getDescription();
4+
public abstract int getPower();
5+
public abstract void fight();
6+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
public class Druid extends Avatar {
2+
3+
@Override
4+
public String getDescription() {
5+
return "Druid";
6+
}
7+
8+
@Override
9+
public int getPower() {
10+
return 10;
11+
}
12+
13+
@Override
14+
public void fight() {
15+
//use magic against opponent
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
public class Knight extends Avatar {
2+
3+
@Override
4+
public String getDescription() {
5+
return "Knight";
6+
}
7+
8+
@Override
9+
public int getPower() {
10+
return 30;
11+
}
12+
13+
@Override
14+
public void fight() {
15+
//use full of power against opponent
16+
}
17+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
public abstract class AvatarProfile extends Avatar {
2+
3+
protected Avatar avatar;
4+
5+
public AvatarProfile(Avatar avatar) {
6+
this.avatar = avatar;
7+
}
8+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
public class Defender extends AvatarProfile {
2+
3+
public Defender(Avatar avatar) {
4+
super(avatar);
5+
}
6+
7+
@Override
8+
public String getDescription() {
9+
return avatar.getDescription() + " Defender";
10+
}
11+
12+
@Override
13+
public int getPower() {
14+
return avatar.getPower() + 15;
15+
}
16+
17+
@Override
18+
public void fight() {
19+
//use shield to protect yourself
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
public class Fighter extends AvatarProfile {
2+
3+
public Fighter(Avatar avatar) {
4+
super(avatar);
5+
}
6+
7+
@Override
8+
public String getDescription() {
9+
return avatar.getDescription() + " Fighter";
10+
}
11+
12+
@Override
13+
public int getPower() {
14+
return avatar.getPower() + 25;
15+
}
16+
17+
@Override
18+
public void fight() {
19+
//use sword to attack an opponent
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
public class Magician extends AvatarProfile {
2+
3+
public Magician(Avatar avatar) {
4+
super(avatar);
5+
}
6+
7+
@Override
8+
public String getDescription() {
9+
return avatar.getDescription() + " Magician";
10+
}
11+
12+
@Override
13+
public int getPower() {
14+
return avatar.getPower() + 5;
15+
}
16+
17+
@Override
18+
public void fight() {
19+
//cast spells to be invisible
20+
}
21+
}

decorator/pattern/Component.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
public abstract class Component {
2+
3+
protected String name;
4+
5+
public String getName() {
6+
return name;
7+
}
8+
9+
public abstract int getValue();
10+
}

0 commit comments

Comments
 (0)