zoukankan      html  css  js  c++  java
  • python面向对象之抽象工厂设计模式



    class truck:
    def use(self):
    return "拉货"
    def __str__(self):
    return "大卡车"


    class minicar:

    def use(self):
    return "带妹兜风"
    def __str__(self):
    return "小轿车"


    # 定义一个大卡车工厂,作用是创建对象
    class truck_factory():
    def makecar(self):
    return truck()
    def makewheel(self):
    return "生产大轮子"


    # 定义一个小汽车工厂
    class car_factory():
    def makecar(self):
    return minicar()
    def makewheel(self):
    return "生产小轮子"


    # 定义一个方法用于调用工厂类生产相关的对象产品
    def Factorys():
    #也可以在工厂列表中再添加工厂类
    factory = [car_factory(),truck_factory()]
    # 此处我选择了car_factory工厂进行对象的创建
    return factory[0]


    #定义一个“商店”类,类中创建方法用于展示“商品”对象。
    class carstop:
    def __init__(self,factory = None):
    self.Factorys = factory

    def showcar(self):
    car = self.Factorys.makecar()
    wheel = self.Factorys.makewheel()
    print("*"*25)
    print("我是一辆%s" % (car))
    print("我能用%s%s" %(car,car.use()))
    print("%s 工厂也能够 %s"%(car,wheel))
    print("*"*25)

    # 实现对象调用
    if __name__ =="__main__":
    carstop(Factorys()).showcar()

    程序运行结果如下:
    *************************
    我是一辆小轿车
    我能用小轿车带妹兜风
    小轿车 工厂也能够 生产小轮子
    *************************


    抽象工厂模式之我见:
    1.适合用在面向对象编程时,在创建一系列函数方法不确定,对象类型不确定时。
    2.抽象工厂模型创建的对象没有个性,即生产的对象没有属性。若要添加属性,对其进行实例化。
    3.抽象工厂模式非常灵活,可以再进行扩展,生产不同种类的对象,创建各种方法,即添加“工厂”类,再定义函数。



  • 相关阅读:
    Python print "hello world" SyntaxError: invalid syntax
    Parencodings(模拟)
    Do the Untwist(模拟)
    Jugs(回溯法)
    Anagrams by Stack(深度优先搜索)
    Fire Net(深度优先搜索)
    Integer Numbers
    Codeforces Beta Round #34 (Div. 2) E. Collisions
    什么是Qt Widget?
    codeblocks快捷键(转)
  • 原文地址:https://www.cnblogs.com/kuangkuangduangduang/p/10110690.html
Copyright © 2011-2022 走看看