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等,这些本来陌生的词汇在物业管理行业变得耳熟能详.在借助科技手段拓展 ...
随机推荐
- mysql-存储过程(转载)
本来想自己写存储过程的,但是看到别人写的很全面,就直接转载过来了. 转自(http://www.cnblogs.com/exmyth/p/3303470.html) 14.1.1 创建存储过程 MyS ...
- PHP-----TP框架----命名空间
TP框架----命名空间 命名空间,起什么作用??? [1]命名空间是一个虚拟的目录,这个文件有可能存在这个电脑里的任何一个地方,但是如果要把这个文件它的命名空间全部写成同一个那么这些文件就相当于在同 ...
- weblogic之CVE-2016-0638反序列化分析
此漏洞是基于CVE-2015-4852漏洞进行黑名单的绕过,CVE-2015-4852补丁主要应用在三个位置上 weblogic.rjvm.InboundMsgAbbrev.class :: Serv ...
- docker-4-镜像
是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件, 它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 1.UnionFS(联合文件 ...
- 了解Session的本质
有一点我们必须承认,大多数web应用程序都离不开session的使用.这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制. AD: 有一点我们必须承认,大多数web应用程序都离 ...
- [转载] 我的WafBypass之道(SQL注入篇)
我的WafBypass之道(SQL注入篇) Web安全 作者:先知技术社区 2016-11-23 7,566 [本文转自安全脉搏战略合作伙伴先知技术社区 原帖地址 安全脉搏编辑huan97 ...
- 【转】如何开发自己的HttpServer-NanoHttpd源码解读
现在作为一个开发人员,http server相关的内容已经是无论如何都要了解的知识了.用curl发一个请求,配置一下apache,部署一个web server对我们来说都不是很难,但要想搞清楚这些背后 ...
- PHP整数转小数
sprintf('%.2f',$memrow['yjrebate1']+$memrow['yjrebate2'])
- 字体在mac win 系统如何优雅的展示
我们知道,不同的操作系统,不同的浏览器,页面字体的显示和渲染存在差异. 那么如何设置font-family,能够使字体在不同的环境下,也拥有好的展示效果? 1.操作系统中字体默认的字体 windows ...
- 修改 Hue 默认数据库
Hue 更改默认数据 1. 需要安装 mysql 一下包 mysql-server mysql-devel mysql-shared mysql-client mysql-python shared ...