Skip to content

Commit 7253729

Browse files
committed
Adding example of abstract factory
1 parent 5576bcb commit 7253729

File tree

2 files changed

+66
-4
lines changed

2 files changed

+66
-4
lines changed

Chapter 3/AbstractFactory.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ var Westeros;
66
function KingJoffery() {
77
}
88
KingJoffery.prototype.makeDecision = function () {
9+
console.log("Decision made by King Joffery");
910
};
1011
KingJoffery.prototype.marry = function () {
1112
};
@@ -17,6 +18,7 @@ var Westeros;
1718
function LordTywin() {
1819
}
1920
LordTywin.prototype.makeDecision = function () {
21+
console.log("Decision made by Lord Tywin");
2022
};
2123
return LordTywin;
2224
})();
@@ -48,6 +50,7 @@ var Westeros;
4850
function KingAerys() {
4951
}
5052
KingAerys.prototype.makeDecision = function () {
53+
console.log("Decision made by King Aerys");
5154
};
5255
KingAerys.prototype.marry = function () {
5356
};
@@ -59,6 +62,7 @@ var Westeros;
5962
function LordConnington() {
6063
}
6164
LordConnington.prototype.makeDecision = function () {
65+
console.log("Decision made by Lord Connington");
6266
};
6367
return LordConnington;
6468
})();
@@ -81,3 +85,32 @@ var Westeros;
8185
})(Westeros.Ruling || (Westeros.Ruling = {}));
8286
var Ruling = Westeros.Ruling;
8387
})(Westeros || (Westeros = {}));
88+
89+
var Westeros;
90+
(function (Westeros) {
91+
(function (Ruling) {
92+
var CourtSession = (function () {
93+
function CourtSession(abstractFactory) {
94+
this.abstractFactory = abstractFactory;
95+
this.COMPLAINT_THRESHOLD = 10;
96+
}
97+
CourtSession.prototype.complaintPresented = function (complaint) {
98+
if (complaint.severity < this.COMPLAINT_THRESHOLD) {
99+
this.abstractFactory.getHandOfTheKing().makeDecision();
100+
} else
101+
this.abstractFactory.getKing().makeDecision();
102+
};
103+
return CourtSession;
104+
})();
105+
Ruling.CourtSession = CourtSession;
106+
})(Westeros.Ruling || (Westeros.Ruling = {}));
107+
var Ruling = Westeros.Ruling;
108+
})(Westeros || (Westeros = {}));
109+
110+
var courtSession1 = new Westeros.Ruling.CourtSession(new Westeros.Ruling.Targaryen.TargaryenFactory());
111+
courtSession1.complaintPresented({ severity: 8 });
112+
courtSession1.complaintPresented({ severity: 12 });
113+
114+
var courtSession2 = new Westeros.Ruling.CourtSession(new Westeros.Ruling.Lannister.LannisterFactory());
115+
courtSession2.complaintPresented({ severity: 8 });
116+
courtSession2.complaintPresented({ severity: 12 });

Chapter 3/AbstractFactory.ts

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@ module Westeros.Ruling
2020
module Westeros.Ruling.Lannister
2121
{
2222
export class KingJoffery implements Westeros.Ruling.IKing{
23-
makeDecision(){}
23+
makeDecision(){
24+
console.log("Decision made by King Joffery");
25+
}
2426
marry(){}
2527
}
2628

2729
export class LordTywin implements Westeros.Ruling.IHandOfTheKing{
28-
makeDecision(){}
30+
makeDecision(){
31+
console.log("Decision made by Lord Tywin");
32+
}
2933
}
3034

3135
export class LannisterFactory implements Westeros.Ruling.IRulingFamilyAbstractFactory{
@@ -41,12 +45,16 @@ module Westeros.Ruling.Lannister
4145
module Westeros.Ruling.Targaryen
4246
{
4347
export class KingAerys implements Westeros.Ruling.IKing{
44-
makeDecision(){}
48+
makeDecision(){
49+
console.log("Decision made by King Aerys");
50+
}
4551
marry(){}
4652
}
4753

4854
export class LordConnington implements Westeros.Ruling.IHandOfTheKing{
49-
makeDecision(){}
55+
makeDecision(){
56+
console.log("Decision made by Lord Connington");
57+
}
5058
}
5159

5260
export class TargaryenFactory implements Westeros.Ruling.IRulingFamilyAbstractFactory{
@@ -57,5 +65,26 @@ module Westeros.Ruling.Targaryen
5765
return new LordConnington();
5866
}
5967
}
68+
}
6069

70+
module Westeros.Ruling{
71+
export class CourtSession{
72+
COMPLAINT_THRESHOLD = 10;
73+
constructor(public abstractFactory: IRulingFamilyAbstractFactory){}
74+
complaintPresented(complaint){
75+
if(complaint.severity < this.COMPLAINT_THRESHOLD){
76+
this.abstractFactory.getHandOfTheKing().makeDecision();
77+
}
78+
else
79+
this.abstractFactory.getKing().makeDecision();
80+
}
81+
}
6182
}
83+
84+
var courtSession1 = new Westeros.Ruling.CourtSession(new Westeros.Ruling.Targaryen.TargaryenFactory());
85+
courtSession1.complaintPresented({ severity: 8});
86+
courtSession1.complaintPresented({ severity: 12});
87+
88+
var courtSession2 = new Westeros.Ruling.CourtSession(new Westeros.Ruling.Lannister.LannisterFactory());
89+
courtSession2.complaintPresented({ severity: 8});
90+
courtSession2.complaintPresented({ severity: 12});

0 commit comments

Comments
 (0)