python 元类工厂模式_工厂模式

[TOC]

# 简单工厂模式

## 函数实现

~~~

# 定义伊兰特车类

class YilanteCar(object):

# 定义车的方法

def move(self):

print("---车在移动---")

def stop(self):

print("---停车---")

# 定义索纳塔车类

class SuonataCar(object):

# 定义车的方法

def move(self):

print("---车在移动---")

def stop(self):

print("---停车---")

# 用来生成具体的对象

def createCar(typeName):

if typeName == "伊兰特":

car = YilanteCar()

elif typeName == "索纳塔":

car = SuonataCar()

return car

# 定义一个销售北京现代车的店类

class CarStore(object):

def order(self, typeName):

# 让工厂根据类型,生产一辆汽车

car = createCar(typeName)

return car

~~~

## 类来实现

~~~

# 定义伊兰特车类

class YilanteCar(object):

# 定义车的方法

def move(self):

print("---车在移动---")

def stop(self):

print("---停车---")

# 定义索纳塔车类

class SuonataCar(object):

# 定义车的方法

def move(self):

print("---车在移动---")

def stop(self):

print("---停车---")

# 定义一个生产汽车的工厂,让其根据具体的订单生产车

class CarFactory(object):

def createCar(self,typeName):

if typeName == "伊兰特":

car = YilanteCar()

elif typeName == "索纳塔":

car = SuonataCar()

return car

# 定义一个销售北京现代车的店类

class CarStore(object):

def __init__(self):

#设置4s店的指定生产汽车的工厂

self.carFactory = CarFactory()

def order(self, typeName):

# 让工厂根据类型,生产一辆汽车

car = self.carFactory.createCar(typeName)

return car

~~~

# 工厂方法模式

~~~

# 定义一个基本的4S店类

class CarStore(object):

#仅仅是定义了有这个方法,并没有实现,具体功能,这个需要在子类中实现

def createCar(self, typeName):

pass

def order(self, typeName):

# 让工厂根据类型,生产一辆汽车

self.car = self.createCar(typeName)

self.car.move()

self.car.stop()

# 定义一个北京现代4S店类

class XiandaiCarStore(CarStore):

def createCar(self, typeName):

self.carFactory = CarFactory()

return self.carFactory.createCar(typeName)

# 定义伊兰特车类

class YilanteCar(object):

# 定义车的方法

def move(self):

print("---车在移动---")

def stop(self):

print("---停车---")

# 定义索纳塔车类

class SuonataCar(object):

# 定义车的方法

def move(self):

print("---车在移动---")

def stop(self):

print("---停车---")

# 定义一个生产汽车的工厂,让其根据具体得订单生产车

class CarFactory(object):

def createCar(self,typeName):

self.typeName = typeName

if self.typeName == "伊兰特":

self.car = YilanteCar()

elif self.typeName == "索纳塔":

self.car = SuonataCar()

return self.car

suonata = XiandaiCarStore()

suonata.order("索纳塔")

~~~

定义了一个创建对象的接口(可以理解为函数),但由子类决定要实例化的类是哪一个,工厂方法模式让类的实例化推迟到子类,抽象的CarStore提供了一个创建对象的方法createCar,也叫作工厂方法。

子类真正实现这个createCar方法创建出具体产品。创建者类不需要直到实际创建的产品是哪一个,选择了使用了哪个子类,自然也就决定了实际创建的产品是什么

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值