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等,这些本来陌生的词汇在物业管理行业变得耳熟能详.在借助科技手段拓展 ...
随机推荐
- 解决 mongodb $in needs an array 问题
问题现象: 在mongodb执行批量查询操作时,抛出异常 Exception 2: $in needs an array. 问题解决: 感谢伟大的 google 和 stackoverflow 有人遇 ...
- Linux环境搭建多项目SVN
1.安装SVN #yum install subversion 2.创建版本库文件夹 #mkdir -p /var/svn/repos/pro1 (/var/svn/repos是根路径,pro1是项目 ...
- jquery mobile header title左对齐 button右对齐
<div data-theme="b" data-role="header" data-position="fixed"> &l ...
- 对极几何(Epipolar Geometry)
基本概念 对极几何(Epipolar Geometry)是Structure from Motion问题中,在两个相机位置产生的两幅图像的之间存在的一种特殊几何关系,是sfm问题中2D-2D求解两帧间 ...
- PAT——1032. 挖掘机技术哪家强
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过105的正整数N,即参赛人数.随后N行,每行给出一位 ...
- 大话Linux内核中锁机制之信号量、读写信号量
大话Linux内核中锁机制之信号量.读写信号量 在上一篇博文中笔者分析了关于内存屏障.读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量.读写信号量的内容. 六.信号量 关于信号量的内容,实 ...
- 查看apache当前并发访问数和进程数
1.查看apache当前并发访问数: netstat -an | grep ESTABLISHED | wc -l 对比httpd.conf中MaxClients的数字差距多少. 2.查看有多少个进程 ...
- Oracle结合Mybatis实现取表TOP 10
之前一直使用mysql和informix数据库,查表中前10条数据十分简单: 最原始版本: select top * from student 当然,我们还可以写的复杂一点,比如外加一些查询条件? 比 ...
- orcal 数据库 maven架构 ssh框架 的全xml环境模版 及常见异常解决
创建maven项目后,毫不犹豫,超简单傻瓜式搞定dependencies(pom.xml 就是maven的依赖管理),这样你就有了所有你要的包 <project xmlns="http ...
- Ext JS 6和Sencha CMD 6 快速入门
Ext JS 6和Sencha CMD 6的入门很简单.一个命令,即可生成一个功能完整的“通用”应用程序,可以运行在本地服务器上. 这个“通用”的应用程序包含一组核心的stores,模型(models ...