Skip to content

Commit 4f57158

Browse files
committed
Adding examples for composite and bridge
1 parent 896d8f4 commit 4f57158

File tree

4 files changed

+149
-7
lines changed

4 files changed

+149
-7
lines changed

Chapter 4/Bridege.js

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
var Westeros;
2+
(function (Westeros) {
3+
(function (Religion) {
4+
var OldGods = (function () {
5+
function OldGods() {
6+
}
7+
OldGods.prototype.prayTo = function (sacrifice) {
8+
console.log("We Old Gods hear your prayer");
9+
};
10+
return OldGods;
11+
})();
12+
Religion.OldGods = OldGods;
13+
14+
var DrownedGod = (function () {
15+
function DrownedGod() {
16+
}
17+
DrownedGod.prototype.prayTo = function (humanSacrifice) {
18+
console.log("*BUBBLE* GURGLE");
19+
};
20+
return DrownedGod;
21+
})();
22+
Religion.DrownedGod = DrownedGod;
23+
24+
var SevenGods = (function () {
25+
function SevenGods() {
26+
}
27+
SevenGods.prototype.prayTo = function (prayerPurpose) {
28+
console.log("Sorry there are a lot of us, it gets confusing here. Did you pray for something?");
29+
};
30+
return SevenGods;
31+
})();
32+
Religion.SevenGods = SevenGods;
33+
34+
var OldGodsAdapter = (function () {
35+
function OldGodsAdapter() {
36+
this._oldGods = new OldGods();
37+
}
38+
OldGodsAdapter.prototype.prayTo = function () {
39+
var sacrifice = new Sacrifice();
40+
this._oldGods.prayTo(sacrifice);
41+
};
42+
return OldGodsAdapter;
43+
})();
44+
Religion.OldGodsAdapter = OldGodsAdapter;
45+
46+
var DrownedGodAdapter = (function () {
47+
function DrownedGodAdapter() {
48+
this._drownedGod = new DrownedGod();
49+
}
50+
DrownedGodAdapter.prototype.prayTo = function () {
51+
var sacrifice = new HumanSacrifice();
52+
this._drownedGod.prayTo(sacrifice);
53+
};
54+
return DrownedGodAdapter;
55+
})();
56+
Religion.DrownedGodAdapter = DrownedGodAdapter;
57+
58+
var SevenGodsAdapter = (function () {
59+
function SevenGodsAdapter() {
60+
this.prayerPurposeProvider = new PrayerPurposeProvider();
61+
this._sevenGods = new SevenGods();
62+
}
63+
SevenGodsAdapter.prototype.prayTo = function () {
64+
this._sevenGods.prayTo(this.prayerPurposeProvider.GetPurpose());
65+
};
66+
return SevenGodsAdapter;
67+
})();
68+
Religion.SevenGodsAdapter = SevenGodsAdapter;
69+
70+
var PrayerPurposeProvider = (function () {
71+
function PrayerPurposeProvider() {
72+
}
73+
PrayerPurposeProvider.prototype.GetPurpose = function () {
74+
};
75+
return PrayerPurposeProvider;
76+
})();
77+
Religion.PrayerPurposeProvider = PrayerPurposeProvider;
78+
var Sacrifice = (function () {
79+
function Sacrifice() {
80+
}
81+
return Sacrifice;
82+
})();
83+
Religion.Sacrifice = Sacrifice;
84+
var HumanSacrifice = (function () {
85+
function HumanSacrifice() {
86+
}
87+
return HumanSacrifice;
88+
})();
89+
Religion.HumanSacrifice = HumanSacrifice;
90+
})(Westeros.Religion || (Westeros.Religion = {}));
91+
var Religion = Westeros.Religion;
92+
})(Westeros || (Westeros = {}));
93+
94+
var god1 = new Westeros.Religion.SevenGodsAdapter();
95+
var god2 = new Westeros.Religion.DrownedGodAdapter();
96+
var god3 = new Westeros.Religion.OldGodsAdapter();
97+
98+
var gods = [god1, god2, god3];
99+
for (var i = 0; i < gods.length; i++) {
100+
gods[i].prayTo();
101+
}

Chapter 4/Bridege.ts

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
module Westeros.Religion
22
{
33
export class OldGods{
4-
prayTo(sacrifice){}
4+
prayTo(sacrifice){
5+
console.log("We Old Gods hear your prayer");
6+
}
57
}
68

79
export class DrownedGod{
8-
prayTo(humanSacrifice){}
10+
prayTo(humanSacrifice){
11+
console.log("*BUBBLE* GURGLE");
12+
}
913
}
1014

1115
export class SevenGods{
12-
prayTo(prayerPurpose){}
16+
prayTo(prayerPurpose){
17+
console.log("Sorry there are a lot of us, it gets confusing here. Did you pray for something?");
18+
}
1319
}
1420

1521
export interface God
@@ -22,7 +28,7 @@ module Westeros.Religion
2228
constructor(){
2329
this._oldGods = new OldGods();
2430
}
25-
prayTo(){
31+
public prayTo(){
2632
var sacrifice= new Sacrifice();
2733
this._oldGods.prayTo(sacrifice);
2834
}
@@ -33,7 +39,7 @@ module Westeros.Religion
3339
constructor(){
3440
this._drownedGod = new DrownedGod();
3541
}
36-
prayTo(){
42+
public prayTo(){
3743
var sacrifice = new HumanSacrifice();
3844
this._drownedGod.prayTo(sacrifice);
3945
}
@@ -45,7 +51,7 @@ module Westeros.Religion
4551
constructor(){
4652
this._sevenGods = new SevenGods();
4753
}
48-
prayTo(){
54+
public prayTo(){
4955
this._sevenGods.prayTo(this.prayerPurposeProvider.GetPurpose());
5056
}
5157

@@ -58,3 +64,12 @@ module Westeros.Religion
5864
export class HumanSacrifice{}
5965

6066
}
67+
68+
var god1 = new Westeros.Religion.SevenGodsAdapter();
69+
var god2 = new Westeros.Religion.DrownedGodAdapter();
70+
var god3 = new Westeros.Religion.OldGodsAdapter();
71+
72+
var gods : Westeros.Religion.God[] = [god1, god2, god3];
73+
for(var i =0; i<gods.length; i++){
74+
gods[i].prayTo();
75+
}

Chapter 4/Composite.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,17 @@ var Westeros;
6363
})(Westeros.Food || (Westeros.Food = {}));
6464
var Food = Westeros.Food;
6565
})(Westeros || (Westeros = {}));
66+
67+
var egg = new Westeros.Food.SimpleIngredient("Egg", 155, 6, 0);
68+
var milk = new Westeros.Food.SimpleIngredient("Milk", 42, 0, 0);
69+
var sugar = new Westeros.Food.SimpleIngredient("Sugar", 387, 0, 0);
70+
var rice = new Westeros.Food.SimpleIngredient("Rice", 370, 8, 0);
71+
72+
var ricePudding = new Westeros.Food.CompoundIngredient("Rice Pudding");
73+
ricePudding.AddIngredient(egg);
74+
ricePudding.AddIngredient(rice);
75+
ricePudding.AddIngredient(milk);
76+
ricePudding.AddIngredient(sugar);
77+
78+
console.log("A serving of rice pudding contains:");
79+
console.log(ricePudding.GetCalories() + " calories");

Chapter 4/Composite.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,18 @@ module Westeros.Food{
6565
return total;
6666
}
6767
}
68+
}
6869

70+
var egg = new Westeros.Food.SimpleIngredient("Egg", 155, 6, 0);
71+
var milk = new Westeros.Food.SimpleIngredient("Milk", 42, 0, 0);
72+
var sugar = new Westeros.Food.SimpleIngredient("Sugar", 387, 0,0);
73+
var rice = new Westeros.Food.SimpleIngredient("Rice", 370, 8, 0);
6974

70-
}
75+
var ricePudding = new Westeros.Food.CompoundIngredient("Rice Pudding");
76+
ricePudding.AddIngredient(egg);
77+
ricePudding.AddIngredient(rice);
78+
ricePudding.AddIngredient(milk);
79+
ricePudding.AddIngredient(sugar);
80+
81+
console.log("A serving of rice pudding contains:");
82+
console.log(ricePudding.GetCalories() + " calories");

0 commit comments

Comments
 (0)