# 抽象工厂模式
class AbstractFactory(object):
computer_name =''
def createCpu(self):
pass
def createMainboard(self):
pass
class IntelFactory(AbstractFactory):
computer_name ='Intel I7-series computer '
def createCpu(self):
return IntelCpu('I7-6500')
def createMainboard(self):
return IntelMainBoard('Intel-6000')
class AmdFactory(AbstractFactory):
computer_name ='Amd 4 computer '
def createCpu(self):
return AmdCpu('amd444')
def createMainboard(self):
return AmdMainBoard('AMD-4000')
class AbstractCpu(object):
series_name =''
instructions =''
arch=''
class IntelCpu(AbstractCpu):
def __init__(self,series):
self.series_name = series
class AmdCpu(AbstractCpu):
def __init__(self,series):
self.series_name = series
class AbstractMainboard(object):
series_name =''
class IntelMainBoard(AbstractMainboard):
def __init__(self,series):
self.series_name = series
class AmdMainBoard(AbstractMainboard):
def __init__(self,series):
self.series_name = series
class ComputerEngineer(object):
def makeComputer(self,factory_obj):
self.prepareHardwares(factory_obj)
def prepareHardwares(self,factory_obj):
self.cpu = factory_obj.createCpu()
self.mainboard = factory_obj.createMainboard()
info ='''------- computer [%s] info:
cpu: %s
mainboard: %s
-------- End --------
'''% (factory_obj.computer_name,self.cpu.series_name,self.mainboard.series_name)
print(info)
if __name__ =="__main__":
engineer = ComputerEngineer()
intel_factory = IntelFactory()
engineer.makeComputer(intel_factory)
amd_factory = AmdFactory()
engineer.makeComputer(amd_factory)