Skip to content

Commit c4373f7

Browse files
committed
decorator
1 parent f0ea888 commit c4373f7

8 files changed

Lines changed: 133 additions & 0 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.anly.designpattern.decorator;
2+
3+
/**
4+
* Created by mingjun on 2016/11/22.
5+
*/
6+
public class Coke implements Drink {
7+
@Override
8+
public String make() {
9+
return "这是一杯可乐";
10+
}
11+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.anly.designpattern.decorator;
2+
3+
/**
4+
* Created by mingjun on 2016/11/22.
5+
*/
6+
public interface Drink {
7+
8+
String make();
9+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.anly.designpattern.decorator;
2+
3+
/**
4+
* Created by mingjun on 2016/11/22.
5+
*/
6+
public class Honey extends Stuff {
7+
8+
public Honey(Drink originalDrink) {
9+
super(originalDrink);
10+
}
11+
12+
@Override
13+
String stuffName() {
14+
return "蜂蜜";
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.anly.designpattern.decorator;
2+
3+
/**
4+
* Created by mingjun on 2016/11/22.
5+
*/
6+
public class Ice extends Stuff {
7+
8+
public Ice(Drink originalDrink) {
9+
super(originalDrink);
10+
}
11+
12+
@Override
13+
String stuffName() {
14+
return "冰";
15+
}
16+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.anly.designpattern.decorator;
2+
3+
/**
4+
* Created by mingjun on 2016/11/22.
5+
*/
6+
public abstract class Stuff implements Drink {
7+
8+
private Drink originalDrink;
9+
public Stuff(Drink originalDrink) {
10+
this.originalDrink = originalDrink;
11+
}
12+
13+
@Override
14+
public String make() {
15+
return originalDrink.make() + ", 加一份" + stuffName();
16+
}
17+
18+
abstract String stuffName();
19+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.anly.designpattern.decorator;
2+
3+
/**
4+
* Created by mingjun on 2016/11/22.
5+
*/
6+
public class Sugar extends Stuff {
7+
8+
public Sugar(Drink originalDrink) {
9+
super(originalDrink);
10+
}
11+
12+
@Override
13+
String stuffName() {
14+
return "糖";
15+
}
16+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.anly.designpattern.decorator;
2+
3+
/**
4+
* Created by mingjun on 2016/11/22.
5+
*/
6+
public class XDrink implements Drink {
7+
8+
@Override
9+
public String make() {
10+
return "这是一杯X牌饮料";
11+
}
12+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.anly.designpattern.decorator;
2+
3+
/**
4+
* Created by mingjun on 16/11/10.
5+
*/
6+
public class XiaoGuang {
7+
8+
public static void main(String[] args) {
9+
10+
Drink coke = new Coke();
11+
System.out.println(coke.make());
12+
13+
// 老板, 来一杯可乐, 加冰
14+
Drink iceCoke = new Ice(new Coke());
15+
System.out.println(iceCoke.make());
16+
17+
// 老板, X饮料, 加冰, 加糖
18+
Drink iceSugarXDrink = new Ice(new Sugar(new XDrink()));
19+
System.out.println(iceSugarXDrink.make());
20+
21+
// 可乐, 加两份冰, 加蜂蜜
22+
Drink doubleIceHoneyCoke = new Ice(new Ice(new Honey(new Coke())));
23+
System.out.println(doubleIceHoneyCoke.make());
24+
25+
// 加蜂蜜的X饮料
26+
Drink honeyXDrink = new Honey(new XDrink());
27+
System.out.println(honeyXDrink.make());
28+
29+
// 还要加冰
30+
Drink iceHoneyXDrink = new Ice(honeyXDrink);
31+
System.out.println(iceHoneyXDrink.make());
32+
33+
}
34+
}

0 commit comments

Comments
 (0)