day 6 汽车4S店铺
1.版本1:大框架
class CarStore(object):
'''定义一个汽车店铺类'''
pass class Car(object):
'''定义一个汽车类'''
pass car_store = Carstore() car.move()
car.music()
car.stop()
2.版本2:买个汽车
class CarStore(object):
'''定义一个汽车店铺类'''
def order(self,money):
if money>10000:
#xxx = Car()
#return xxx
return Car() class Car(object):
'''定义一个汽车类'''
def move(self):
print("----我在跑--")
def music(self):
print("----播放音乐--")
def stop(self):
print("----停车区--") car_store = CarStore()
car = car_store.order(100000) car.move()
car.music()
car.stop()
----我在跑--
----播放音乐--
----停车区--
3.版本3:买个奇瑞qq
class CarStore(object):
'''定义一个汽车店铺类'''
def order(self,car_type): #耦合性高
if car_type == "奇瑞QQ":
return QQ()
elif car_type == "帝豪":
return King() class Car(object):
'''定义一个汽车类'''
def move(self):
print("----我在跑--")
def music(self):
print("----播放音乐--")
def stop(self):
print("----停车区--") class QQ(Car):
pass
class King(Car):
pass car_store = CarStore()
car = car_store.order("奇瑞QQ") car.move()
car.music()
car.stop()
----我在跑--
----播放音乐--
----停车区--
4.版本4:通过函数def 解耦
class CarStore(object):
'''定义一个汽车店铺类'''
def order(self,car_type):
return select_car_type(car_type) def select_car_type(car_type):
if car_type == "奇瑞QQ":
return QQ()
elif car_type == "帝豪":
return King() class Car(object):
'''定义一个汽车类'''
def move(self):
print("----我在跑--")
def music(self):
print("----播放音乐--")
def stop(self):
print("----停车区--") class QQ(Car):
pass
class King(Car):
pass car_store = CarStore()
car = car_store.order("奇瑞QQ") car.move()
car.music()
car.stop()
----我在跑--
----播放音乐--
----停车区--

开发文档:
def select_car_type(car_type)
功能:返回一个汽车对象的引用
参数:需要得到汽车的类型
5.版本5:完成CarStore 和Car的分离 简单工厂模式
class CarStore(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 == "奇瑞QQ":
return QQ()
elif car_type == "帝豪":
return King()
elif car_type == "byd":
return Byd() class Car(object):
'''定义一个汽车类'''
def move(self):
print("----我在跑--")
def music(self):
print("----播放音乐--")
def stop(self):
print("----停车区--") class QQ(Car):
pass
class King(Car):
pass
class Byd(Car):
pass car_store = CarStore()
car = car_store.order("奇瑞QQ") car.move()
car.music()
car.stop()

6.工厂方法模式
1)版本1:
class Store(object):
def order(self,car_type):
return self.factory.select_car_type(car_type) class CarStore(Store):
'''定义一个汽车店铺类'''
def __init__(self):
self.factory = Factory() class BMWCarStore(Store):
def __init__(self):
self.factory = BMWFactory() class BMWFactory(object):
def select_car_type(self):
pass class Factory(object):
def select_car_type(self,car_type):
pass car_store = CarStore()
car = car_store.order("奇瑞QQ")
2)版本2:在父类定义接口,在子类实现
class Store(object):
def select_car(self):
pass def order(self,car_type):
return self.select_car(car_type) class CarStore(Store):
def select_car(self,car_type):
return Factory().select_car(car_type) class Factory(object):
def select_car(self,car_type):
pass car_store = CarStore()
car = car_store.order("奇瑞QQ") class BMWCarStore(Store):
def select_car(self,car_type):
return BMWFactory().select_car_type(car_type) class BMWFactory(object):
def select_car_type(self):
pass

3)版本3:优化
class Store(object):
'''定义一个父类Store'''
def select_car(self):
pass def order(self,car_type):
return self.select_car(car_type) #父类调用接口 class CarStore(Store):
'''定义一个汽车类子类'''
def select_car(self,car_type):
return Factory().select_car(car_type) #子类实现 class Factory(object):
'''定义一个工厂类,进行判断'''
def select_car(self,car_type):
if car_type == "奇瑞QQ":
return "---QQ---"
elif car_type == "帝豪":
return "---king---"
elif car_type == "byd":
return "---byd---" car_store = CarStore()
car = car_store.order("奇瑞QQ")
工厂方法模式的定义
定义了一个创建对象的
接口(可以理解为函数),但由子类决定要实例化的类是哪一个,工厂方法模式让类的实例化推迟到子类,抽象的CarStore提供了一个创建对象的方法createCar,也叫作工厂方法。子类真正实现这个createCar方法创建出具体产品。 创建者类不需要直到实际创建的产品是哪一个,选择了使用了哪个子类,自然也就决定了实际创建的产品是什么。
day 6 汽车4S店铺的更多相关文章
- JAVA汽车4S店管理系统
JAVA汽车4S店管理系统源码(前台+后台)分为这5个大模块 系统设置 整车销售辅助销售汽修管理 汽修统计1.经理管理(增加 和删除功能) 表设计经理编号经理名年龄性别2.业务员管理(增删改查) ...
- 汽车4S店经验指标完成情况报表制作分享
集团公司一般为了加强下属的经营管理,以及项经营指标完情况,需要制定一些报表.我们平时也经常遇到这种情况,而这些报表要包括什么内容呢?该怎么制作呢?用什么制作呢?今天小编就以4s店为例,分享给大家一个报 ...
- 汽车之家店铺数据抓取 DotnetSpider实战[一]
一.背景 春节也不能闲着,一直想学一下爬虫怎么玩,网上搜了一大堆,大多都是Python的,大家也比较活跃,文章也比较多,找了一圈,发现园子里面有个大神开发了一个DotNetSpider的开源库,很值得 ...
- 汽车之家店铺数据抓取 DotnetSpider实战
一.背景 春节也不能闲着,一直想学一下爬虫怎么玩,网上搜了一大堆,大多都是Python的,大家也比较活跃,文章也比较多,找了一圈,发现园子里面有个大神开发了一个DotNetSpider的开源库,很值得 ...
- 转 【O2O案例】汽车后市场垂直化电子商务:平业模式解析
核心提示:一.商业模式简介.汽车后市场垂直化电子商务是我在2010年初开始筹划,起因是在淘宝工作期间运营汽车类目后遇到很多问题无决,由于 一.商业模式简介. 汽车后市场垂直化电子商务是我在2010年初 ...
- 类设计:设计卖车的4S店
class Car(object): # 定义车的方法 def move(self): print('---车在移动---') def stop(self): print('---停车---') # ...
- 调研助力4S店,解码困境谜团
关键词————4S店.汽车.销售.精准营销.闭环.用户满意度.精细化管理 一.背景 4S店是“四位一体”的汽车销售专卖店,包括了整车销售.零配件供应.售后服务.信息反馈四项功能. 信息化管理 精细化管 ...
- 【转载】TalkingData首席金融行业专家鲍忠铁:18亿数据解读移动互联网
http://www.36dsj.com/archives/33417 鲍忠铁:大家下午好! 今天我会讲三个议题,一是用18亿数据解读现在移动互联网的生态圈.二是看看数据有什么样的应用.三是大数据的隐 ...
- 【转】物业管理与移动互联网科技|微信公众平台,物业app,物业O2O
[导语]当下,物业管理行业正在接受新科技浪潮的冲击和洗礼,业界企业纷纷探索物业服务的新发展模式.云服务.微社区.微信公众平台.app等,这些本来陌生的词汇在物业管理行业变得耳熟能详.在借助科技手段拓展 ...
随机推荐
- MyBatis使用自定义TypeHandler转换类型的实现方法
From: http://www.manongjc.com/article/15577.html 这篇文章主要介绍了MyBatis使用自定义TypeHandler转换类型的实现方法,本文介绍使用Typ ...
- 【bbs】login.php
require的路径 整体结构的复用 渐变效果的加入 按钮:实现背景透明,文字不透明:在background-color中使用rgba,标准浏览器中,背景透明,文字不透明background-colo ...
- random模块 参生随机数
记得要import random模块 随机整数: >>> import random >>> random.randint(0,99) 21 随机选取0到100间的 ...
- IE6/IE7不支持first-child的解决办法
#sidebar li:first-child{ border-top-style:none; } #sidebar li{ border-top-width:1px; border-top-styl ...
- (转)进程process和线程thread的关系
写的很好很明白cpu每次只能执行一个进程,所以其他进程会挂起 在一个进程中,允许存在n个线程,n个线程共享这个进程中的资源 多个线程在共享的时候存在资源互斥,一次只能一个线程,会需要加锁 一次存在固定 ...
- 怎样卸载wineQQ?
好久没实用ubuntu系统的wineqq了.今天用的时候,提示无法使用,要求官网又一次下载新版本号, 感觉挺麻烦的,准备卸载,半天卸载不了. 经过努力,终于还是卸载了. 卸载命令: sudo dpk ...
- oracle json 解析函数
CREATE OR REPLACE TYPE ty_tbl_str_split IS TABLE OF ty_row_str_split;CREATE OR REPLACE TYPE ty_row_s ...
- #leetcode刷题之路47-全排列 II
给定一个可包含重复数字的序列,返回所有不重复的全排列.示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]] 之前的https://www.cnblogs.com/ ...
- CentOS6.10安装详解
一.简介 CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterpriser ...
- Linux系统Java环境配置
1.卸载Linux系统自带的JDK java -version rpm -qa | grep -i java 我们要删除掉自带的JDK环境 rpm -e --nodeps java-1.6.0-ope ...