设计模式-工厂篇(1)
时间:2023-04-27
本文章向大家介绍设计模式-工厂篇(1),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
意图:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
适用性:
当一个类不知道它所必须创建的对象的类的时候。
当一个类希望由它的子类来指定它所创建的对象的时候。
当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
python代码:
代码
# coding=utf8
class TranslateBase(object):
def __init__(self):
self.trans = {}
def get(self, key):
return self.trans.get(key, str(key))
class ChinaClass(TranslateBase):
def __init__(self):
self.trans = {"dog": "狗", "cat": "猫"}
class JapanClass(TranslateBase):
def __init__(self):
self.trans = {"dog": "gou", "cat": "mao"}
class EnglandClass(TranslateBase):
pass
def get_class(cls_name):
_cls_map = {"china": ChinaClass, "japan": JapanClass, "england": EnglandClass}
return _cls_map.get(cls_name)()
ch, en = get_class("china"), get_class("england")
for item in "dog parrot cat bear".split():
print(ch.get(item), en.get(item))
原文地址:https://www.cnblogs.com/asia-yang/p/17360493.html
- 对JAVASCRIPT匿名函数的理解
- python 项目中的 requirements.txt
- 2017奇葩机器人大盘点:Sophia想生孩子,Atlas后空翻,贝佐斯骑“高达”……
- XmlSpy / XSD 以及 验证
- jQuery基础
- java与c#的反射性能比较
- 多迪技术总监揭秘:前端工程师主要做什么?前景怎么样?
- c#:Reflector+Reflexil 修改编译后的dll/exe文件
- testNG java.net.SocketException: Software caused connection abort: socket write error
- MyBatis.Net 学习手记
- 基于JavaScript 声明全局变量的三种方式详解
- 网页基础篇之如何制作简单的静态网页
- Mybatis.Net 整合 ODP.NET Managed
- 通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- leetcode链表之分割链表
- 五分钟带你读懂 TCP全连接队列(图文并茂)
- Python基础
- JDK15正式发布,新增功能预览!
- Magicodes.IE 2.3重磅发布——.NET Core开源导入导出库
- 安防视频监控系统视频上云解决方案EasyCVR音频基础知识介绍
- 安防视频监控系统视频上云解决方案EasyCVR语音转发功能音频数据打包发送流程介绍
- 视频上云/安防视频融合平台/安防视频云服务EasyCVR通道播放界面出现样式重叠如何修正?
- 什么是MySQL数据库?看这一篇干货文章就够了!
- 折线图
- 雷达图
- Cypress系列(49)- invoke() 命令详解
- java线程池(三):ThreadPoolExecutor源码分析
- 社会工程学
- msf之木马程序