首页 > 其他分享 >创建模式-抽象工厂

创建模式-抽象工厂

时间:2023-06-28 15:44:22浏览次数:31  
标签:show 创建 self get 工厂 抽象 print class def

# 创建型模式-抽象工厂模式
# 在工厂抽象类中有多个创建对象的方法,

from abc import ABCMeta, abstractmethod


class IApple(metaclass=ABCMeta):

    @abstractmethod
    def show(self):
        pass


class HFSApple(IApple):

    def show(self):
        print("红富士苹果")


class QNJGApple(IApple):

    def show(self):
        print("乔纳金果苹果")


class IBanana(metaclass=ABCMeta):

    @abstractmethod
    def show(self):
        pass


class MBanana(IBanana):

    def show(self):
        print("米蕉")


class ZMBanana(IBanana):

    def show(self):
        print("芝麻蕉")


class IStore(metaclass=ABCMeta):

    @abstractmethod
    def get_apple(self):
        pass

    @abstractmethod
    def get_banana(self):
        pass


class StoreA(IStore):
    def get_apple(self):
        print("商店A的苹果")
        return HFSApple()

    def get_banana(self):
        print("商店A的香蕉")
        return MBanana()


class StoreB(IStore):
    def get_animal(self):
        print("商店B的苹果")
        return QNJGApple()

    def get_banana(self):
        print("商店B的香蕉")
        return ZMBanana()


if __name__ == "__main__":
    store_a = StoreA()
    animal = store_a.get_banana()
    animal.show()
    fruit = store_a.get_apple()
    fruit.show()

  

 

标签:show,创建,self,get,工厂,抽象,print,class,def
From: https://www.cnblogs.com/fuchenjie/p/17511563.html

相关文章

  • 创建型模式-工厂方法模式
    #创建型模式-工厂方法模式#相对于简单工厂模式,如果添加了新的动物类,对用的工厂方法需要一并修改违反了开闭原则,#因此工厂方法模式,新增了抽象工厂类,将具体工厂进行隔离满足开闭原则fromabcimportABCMeta,abstractmethodclassIAnimal(metaclass=ABCMeta):@ab......
  • 1120 1140 1160 工厂上imes
    /*车间初始化*/deletework_shopwheresitein('1120','1140','1160');insertintoimes.work_shop(site,work_shop,description)selectsite,work_center,descriptionfromwipdba.time_workcenter@jymesxwherewc_category=&#......
  • 创建Avalonia 模板项目-基础
    创建Avalonia模板项目-基础Avalonia是一个跨平台的.NET框架,用于构建漂亮、现代的图形用户界面(GUI)。使用Avalonia,您可以从单个代码库创建适用于Windows、macOS、Linux、iOS、Android和WebAssembly的原生应用程序。本文部分内容来自官方文档地址:官方文档1.环境配置要求......
  • 创建模式-简单工厂模式
    fromabcimportABCMeta,abstractmethodclassAnimal(metaclass=ABCMeta):@abstractmethoddefsay(self):passclassDog(Animal):defsay(self):print("汪汪")classCat(Animal):defsay(self):print(&......
  • 综合安防海康服务器创建角色
    登录平台,点右上角的系统管理  点击角色管理  添加,然后勾选应用权限,需要给哪些权限,就选择相应的权限,从上到下选择  然后到用户管理,新建一个用户,关联刚才创建的角色即可  ......
  • 创建django项目
    一、python基本信息python版本:3.8Django版本:2.2django:python写web网站的最好用的框架,mtv框架pip:python自带的包管理工具,管家pip安装一个第三方包:pipinstall包名==版本(pipinstalldjango==2.2)pip卸载:pipuninstall包名pip查看所有包:piplist终端命令行:pythonpytho......
  • 创建WinFrom项目,生成桌面exe安装包 【VS2019】
    一:添加WinFrom开发需要的工具  a)打开VS-->选择随意项目或继续无需代码-->工具-->获取工具和功能-->选中【.NET桌面开发】进行安装即可。二:创建WinFrom项目  a)打开VS-->创建新项目-->搜索窗体应用,选择Windows窗体应用(.NETFramework)如图所示-->修改项目名称、位置......
  • docker compose 配置 mysql 容器启动时创建数据库
    要在DockerCompose中配置MySQL容器,在容器启动时创建数据库,你可以按照以下步骤进行操作:在你的DockerCompose文件中,定义一个MySQL服务。确保你已经设置了适当的环境变量,如MYSQL_ROOT_PASSWORD和MYSQL_DATABASE。下面是一个示例的DockerCompose配置:version:'3'......
  • 创建型模式-单例模式(使用元类实现)
    #创建型模式-单例模式(使用元类实现)#线程锁:防止创建多个实例#双重检查:实例创建后,防止重复加锁占用资源#__call__作用:__call__方法使一个类的实例像方法一样调用,当我们调用一个实例时,实际就是调用了它的__call__方法importtimefromthreadingimportLockfromconcurrent.futu......
  • 创建型模式-单例模式(使用类实现)
    importtimefromthreadingimportLockfromconcurrent.futuresimportThreadPoolExecutorclassTest():passclassSingleton():_local=Lock()_insrance=None@classmethoddefinstance(cls,*args,**kwargs):ifnotcls._i......