class IColdWeapon(object):
def info(self):
raise NotImplementedError
def stick(self):
raise NotImplementedError
class Sword(IColdWeapon):
def info(self):
print("This cold weapon is Sword")
def stick(self):
print("Use sword to stick")
class Knigfe(IColdWeapon):
def info(self):
print("This cold weapon is Knigfe")
def stick(self):
print("Use knigfe to stick")
#------------------------------------------------------
class IModernWeapon(object):
def info(self):
raise NotImplementedError
def fire(self):
raise NotImplementedError
class Gun(IModernWeapon):
def info(self):
print("This modern weapon is Gun")
def fire(self):
print("Gun Fire! ...................")
class Cannon(IModernWeapon):
def info(self):
print("This modern weapon is Cannon")
def fire(self):
print("Cannon Fire! oooooooooooooooooooo")
#------------------------------------------------------
class IFactory(object):
def create_cold_weapon(self, weapon_name):
raise NotImplementedError
def create_modern_weapon(self, weapon_name):
raise NotImplementedError
class PeterFactory(IFactory):
def create_cold_weapon(self):
return Sword()
def create_modern_weapon(self):
return Gun()
class JakeFactory(IFactory):
def create_cold_weapon(self):
return Knigfe()
def create_modern_weapon(self):
return Cannon()
#------------------------------------------------------
def main():
peterFactory = PeterFactory()
jakeFactory = JakeFactory()
print()
peter_cold_weapon = peterFactory.create_cold_weapon()
peter_modern_weapon = peterFactory.create_modern_weapon()
peter_cold_weapon.stick()
peter_modern_weapon.fire()
print()
jake_cold_weapon = jakeFactory.create_cold_weapon()
jake_modern_weapon = jakeFactory.create_modern_weapon()
jake_cold_weapon.stick()
jake_modern_weapon.fire()
if __name__ == "__main__":
main()