• 面向对象


     一:

    工厂模式,单例模式,都属于设计模式

    设计模式是什么?设计模式是前人对软件常见问题和架构设计出来的常用的解决方案

    常见的设计模式有27种,观察者模式。。。

    推荐一本书:《大话设计模式》

      

     二:

      1.简单工厂模式

    我们来模拟一下汽车4s店的售货问题,首先先定义两个汽车品牌类(宝马和奥迪),即下面的BaoMa和Audio,再定义一个4s店类 (下面的CarStore类),

    下面是客户实例化一个客户来买宝马车,经过4s店的判断,执行BaoMa类下面的定义的方法。这就是一个简单的工厂模式

    
    
    class BaoMa():
    def move(self):
    print("===宝马车在移动===")

    def stop(self):
    print('==宝马车停车===')

    class Audio():
    def move(self):
    print("===奥迪车在移动===")

    def stop(self):
    print('==奥迪车停车===')


    class CarStore():
    def order(self,brand):
    if brand == "宝马":
    car = BaoMa()
    elif brand == "奥迪":
    car = Audio()
    return car

    clientPerson = CarStore()
    car = clientPerson.order("宝马")
    car.move()
    car.stop()
     

     2.工厂方法模式:

      定义:  

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

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

      

      当买车时,有很多种品牌可以选择,比如北京现代、别克、凯迪拉克、特斯拉等,那么此时该怎样进行设计呢?

    # 定义一个基本的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("索纳塔")

      

  • 相关阅读:
    from fake_useragent import UserAgent
    teamviewer 安装 仅学习
    利用pandas 中的read_html 获取页面表格
    第十二天 最恶心的考试题
    第十三天 生成器和生成器函数, 列表推导式
    第十一天 函数名的使用以及第一类对象, 闭包, 迭代器
    第十天 动态参数,名称空间,作用域,函数的嵌套,gloabal / nonlocal 关键字
    初始函数, 函数的定义,函数名,函数体以及函数的调用,函数的返回值,函数的参数
    第八天 文件的读,写,追加,读写,写读,seek()光标的移动,修改文件以及另一种打开文件的方式
    第七天 1.基础数据类型的补充 2.set集合 3.深浅拷贝
  • 原文地址:https://www.cnblogs.com/nihao2/p/13897916.html
Copyright © 2020-2023  润新知