python 设计一个卖车的4S店全过程

作者: 鲁智深 分类: Python 发布时间: 2017-06-20 23:57

1、设计一个卖车的4S店,该怎样做呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#coding=utf-8
class Car_store(object):
    def order(self,money):
        if money > 5000:
            return Car()#返回了一个Car的类对象

class Car(object):
    def move(self):
        print("车在移动...")
    def music(self):
        print("音乐播放...")
    def stop(self):
        print("停车ing....")

car_store = Car_store()
car = car_store.order(10000)
car.move()
car.music()
car.stop()

设计一个卖北京现代车的4S店

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
#coding=utf-8
#设计一个卖车的4S店,该怎样做呢?
#设计一个卖北京现代车的4S店
class Car_store(object):
    def order(self,car_type):
        if car_type == "索纳塔":
            return Sunata()
        elif car_type == "名图":
            return  Mingtu()

class Car(object):
    def move(self):
        print("车在移动...")
    def music(self):
        print("音乐播放...")
    def stop(self):
        print("停车ing....")


class Sunata(Car):#车,继承了Car
    def __init__(self):
        self.name = "索纳塔"

class Mingtu(Car):#车,继承了Car
    def __init__(self):
        self.name = "名图"


car_store = Car_store()
car = car_store.order("索纳塔")
print("当前购买的是%s" %car.name)
car.move()
car.music()
car.stop()

这样做,不太好,因为当北京现代又生产一种新类型的车时,又得在CarStore类中修改,有没有好的解决办法呢?

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
#coding=utf-8
#设计一个卖车的4S店,该怎样做呢?
#设计一个卖北京现代车的4S店
#这样做,不太好,因为当北京现代又生产一种新类型的车时,又得在CarStore类中修改,有没有好的解决办法呢?
#利用函数进行解耦
class Car_store(object):
    def order(self,car_type):
        return select_car_type(car_type)#通过他进行调用函数,解决了 解藕 操作

def select_car_type(car_type):#但是这里不完美!!!
    if car_type == "索纳塔":
        return Sunata()
    elif car_type == "名图":
        return  Mingtu()

class Car(object):
    def move(self):
        print("车在移动...")
    def music(self):
        print("音乐播放...")
    def stop(self):
        print("停车ing....")


class Sunata(Car):#车,继承了Car
    def __init__(self):
        self.name = "索纳塔"

class Mingtu(Car):#车,继承了Car
    def __init__(self):
        self.name = "名图"


car_store = Car_store()
car = car_store.order("索纳塔")
print("当前购买的是%s" %car.name)
car.move()
car.music()
car.stop()

简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类

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
#coding=utf-8
#设计一个卖车的4S店,该怎样做呢?
#设计一个卖北京现代车的4S店
#这样做,不太好,因为当北京现代又生产一种新类型的车时,又得在CarStore类中修改,有没有好的解决办法呢?
#利用函数进行解耦
#简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类

class Car_store(object):#
    def __init__(self):
        self.factory = Factory()   #在类的内部实例化Factory类对象

    def order(self,car_type):
        return self.factory.select_car_type(car_type)   #通过他进行调用函数,解决了 解藕 操作

class Factory(object):   #创建一个工厂类
    def select_car_type(self,car_type):
        if car_type == "索纳塔":
            return Sunata()
        elif car_type == "名图":
            return Mingtu()
        elif car_type == "伊兰特":  #接下来很方便就可以添加伊兰特这种车型了
            return Yilante()

class Car(object):
    def move(self):
        print("车在移动...")
    def music(self):
        print("音乐播放...")
    def stop(self):
        print("停车ing....")


class Sunata(Car):#索纳塔车,继承了Car
    def __init__(self):
        self.name = "索纳塔"

class Mingtu(Car):#名图车,继承了Car
    def __init__(self):
        self.name = "名图"

class Yilante(Car):#伊兰特车,继承了Car  #接下来很方便就可以添加伊兰特这种车型了
    def __init__(self):
        self.name = "伊兰特"

car_store = Car_store()
car = car_store.order("索纳塔")
print("当前购买的是%s" %car.name)
car.move()
car.music()
car.stop()

我4s店不止有卖北京现代,还要卖宝马

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
55
#coding=utf-8
#设计一个卖车的4S店,该怎样做呢?
#设计一个卖北京现代车的4S店
#这样做,不太好,因为当北京现代又生产一种新类型的车时,又得在CarStore类中修改,有没有好的解决办法呢?
#利用函数进行解耦
#简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类
#我4s店不知有卖北京现代,还要卖宝马

class Store(object):   #设置支持买多种品牌-抽取基类
    def select_car(self,car_type):
        pass

    def order(self,car_type):
        return self.select_car(car_type)

class Car_store(Store):   #卖汽车的类
    def select_car(self,car_type):
        return Factory().select_car_type(car_type)   #通过他进行调用函数,解决了 解藕 操作

class Factory(object):   #创建一个工厂类
    def select_car_type(self,car_type):
        if car_type == "索纳塔":
            return Sunata()
        elif car_type == "名图":
            return Mingtu()
        elif car_type == "伊兰特":  #接下来很方便就可以添加伊兰特这种车型了
            return Yilante()

class Car(object):
    def move(self):
        print("车在移动...")
    def music(self):
        print("音乐播放...")
    def stop(self):
        print("停车ing....")


class Sunata(Car):#索纳塔车,继承了Car
    def __init__(self):
        self.name = "索纳塔"

class Mingtu(Car):#名图车,继承了Car
    def __init__(self):
        self.name = "名图"

class Yilante(Car):#伊兰特车,继承了Car  #接下来很方便就可以添加伊兰特这种车型了
    def __init__(self):
        self.name = "伊兰特"

car_store = Car_store()
car = car_store.order("伊兰特")
print("当前购买的是%s" %car.name)
car.move()
car.music()
car.stop()

6.1设置支持买多种品牌-抽取基类

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#coding=utf-8
#1、设计一个卖车的4S店,该怎样做呢?
#2、设计一个卖北京现代车的4S店
#3、这样做,不太好,因为当北京现代又生产一种新类型的车时,又得在CarStore类中修改,有没有好的解决办法呢?
#4、利用函数进行解耦
#5、简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类
#6、我4s店不知有卖北京现代,还要卖宝马
##6.1设置支持买多种品牌-抽取基类
##6.2当买车时,有很多种品牌可以选择,比如北京现代、别克、凯迪拉克、特斯拉等

#设置支持买多种品牌-抽取基类
class Store(object):
    def select_car(self,car_type):
        pass

    def order(self,car_type):
        return self.select_car(car_type)

#北京现代的店
class Car_store(Store):   #卖汽车的类
    def select_car(self,car_type):
        return Factory().select_car_type(car_type)   #通过他进行调用函数,解决了 解藕 操作

#创建一个北京现代工厂类
class Factory(object):
    def select_car_type(self,car_type):
        if car_type == "索纳塔":
            return Sunata()
        elif car_type == "名图":
            return Mingtu()
        elif car_type == "伊兰特":  #接下来很方便就可以添加伊兰特这种车型了
            return Yilante()

#宝马的店
class BMW_Car_store(Store):   #卖汽车的类
    def select_car(self,car_type):
        return BMW_Factory().select_car_type(car_type)   #通过他进行调用函数,解决了 解藕 操作

#创建一个宝马的工厂类
class BMW_Factory(object):  
    def select_car_type(self,car_type):
        if car_type == "宝马5系":
            return BNW_5()
        elif car_type == "宝马7系":
            return BNW_7()
        elif car_type == "宝马X5":  #接下来很方便就可以添加伊兰特这种车型了
            return BNW_x5()

#车在干什么
class Car(object):
    def move(self):
        print("车在移动...")
    def music(self):
        print("音乐播放...")
    def stop(self):
        print("停车ing....")

#北京现代的车类
class Sunata(Car):#索纳塔车,继承了Car   #这里继承car是为了,能调用他的动作
    def __init__(self):
        self.name = "索纳塔"

class Mingtu(Car):#名图车,继承了Car
    def __init__(self):
        self.name = "名图"

class Yilante(Car):#伊兰特车,继承了Car  #接下来很方便就可以添加伊兰特这种车型了
    def __init__(self):
        self.name = "伊兰特"

#宝马的车类
class BNW_5(Car):#索纳塔车,继承了Car   #这里继承car是为了,能调用他的动作
    def __init__(self):
        self.name = "宝马5系"

class BNW_7(Car):#名图车,继承了Car
    def __init__(self):
        self.name = "宝马7系"

class BNW_x5(Car):#伊兰特车,继承了Car  #接下来很方便就可以添加伊兰特这种车型了
    def __init__(self):
        self.name = "宝马X5"

print("---北京现代店---")
car_store = Car_store()
car = car_store.order("伊兰特")
print("当前购买的是%s" %car.name)
car.move()
car.music()
car.stop()

print("---宝马现代店---")
bmw_store = BMW_Car_store()
bmw = bmw_store.order("宝马5系")
print("当前购买的是%s" %bmw.name)
bmw.move()
bmw.music()
bmw.stop()

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注