-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSimpleFactoryPattern.py
More file actions
54 lines (45 loc) · 1.57 KB
/
Copy pathSimpleFactoryPattern.py
File metadata and controls
54 lines (45 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""
Simple Factory Pattern - decouples object creation to an interface,
encapsulating complexity of code into another object and that object's
main role is just for generating different types of components
Example - User in different locale have different language and currency.
A user factory can be used in this case to supervise the creation of
the different type of users
"""
class UserFactory(object):
def createUser(self, locale):
if locale == "us":
return AmericanUser()
elif locale == "china":
return ChineseUser()
elif locale == "uk":
return BritishUser()
elif locale == "japan":
return JapaneseUser()
else:
print "Please specify a locale"
return
class User(object):
def __init__(self, language, currency):
self.language = language
self.currency = currency
def getProfile(self):
return {
"language": self.language,
"currency": self.currency
}
class AmericanUser(User):
def __init__(self):
super(AmericanUser, self).__init__("English", "USD")
class ChineseUser(User):
def __init__(self):
super(ChineseUser, self).__init__("Chinese", "RMB")
class BritishUser(User):
def __init__(self):
super(BritishUser, self).__init__("English", "GBP")
class JapaneseUser(User):
def __init__(self):
super(JapaneseUser, self).__init__("Japanese", "JPY")
userFactory = UserFactory()
americanUser = userFactory.createUser("us")
print americanUser.getProfile()