java 原型模式_原型模式
Python 方式:
# 原型模式 with Python
import copy
# 用copy包实现深拷贝(copy.deepcopy())和浅拷贝(copy.copy())
from abc import abstractmethod,ABCMeta
# 创建一接口
class Shape(metaclass=ABCMeta):
_id =""
in_type = ""
@abstractmethod
def draw(self):
pass
def getType(self):
return self.in_type
def getID(self):
return self._id
def setID(self,in_id):
self._id = in_id
def clone(self):
#深拷贝
myclone = copy.deepcopy(self)
return myclone
# 创建实体类
class Rectangle(Shape):
def __init__(self):
self.in_type = "Rectangel"
def draw(self):
print("Inside Rectangle.draw() method.")
class Square(Shape):
def __init__(self):
self.in_type = "Square"
def draw(self):
print("Inside Square.draw() method.")
class Circle(Shape):
def __init__(self):
self.in_type = "Circle"
def draw(self):
print("Inside Circle.draw() method.")
# 获取数据实体类
class ShapeCache():
#Python 无静态变量,用开放类变量
shapeMap = {}
def getShape(self,shapeID):
cachedShape = self.shapeMap[shapeID]
return cachedShape.clone()
# 静态方法
@staticmethod
def loadCache():
circle1 = Circle()
circle1.setID("1")
ShapeCache.shapeMap[circle1.getID()] = circle1
square1 = Square()
square1.setID("2")
ShapeCache.shapeMap[square1.getID()] = square1
rectangle1 = Rectangle()
rectangle1.setID("3")
ShapeCache.shapeMap[rectangle1.getID()] = rectangle1
# 调用输出
if __name__ == '__main__':
ShapeCache.loadCache()
myShape = ShapeCache()
cloneShape1 = myShape.getShape("1")
print("Shape : %s" %cloneShape1.getType())
cloneShape1.draw()
cloneShape2 = myShape.getShape("2")
print("Shape : %s" % cloneShape2.getType())
cloneShape2.draw()
cloneShape3 = myShape.getShape("3")
print("Shape : %s" % cloneShape3.getType())
cloneShape3.draw()
Siskin.xu
Siskin.xu
sis***@sohu.com12个月前 (02-28)
java 原型模式_原型模式相关推荐
- 设计模式 - 创建型模式_原型模式
文章目录 创建型模式 概述 Case 场景模拟⼯程 Bad Impl Better Impl (原型模式重构代码) 小结 创建型模式 创建型模式提供创建对象的机制, 能够提升已有代码的灵活性和可复⽤性 ...
- java策略模式 工厂模式_策略模式和工厂模式搭配使用
策略模式和工厂模式的搭配使用可以很好地消除代码if-else的多层嵌套 需求 针对店下商铺,有这样一个需求,对用户客户分为了普通客户.vip客户.超级vip用户.专属vip用户4个等级,每当用户购买商 ...
- java原型链_原型链的使用
这段时间突然有点了解了原型的方法然后看了这个文章感觉很详细,就记录一下 原型对象 每个javascript对象都有一个原型对象,这个对象在不同的解释器下的实现不同.比如在firefox下,每个对象都有 ...
- 全库模式 用户模式 表模式_暗模式,亮模式和用户的故事
全库模式 用户模式 表模式 I have been working on designing a UI for an app that has individuals over the age of ...
- 设计模式 - 创建型模式_建造者模式
文章目录 创建型模式 概述 Case 模拟工程 Bad Impl Better Impl (建造者模式重构代码) 小结 创建型模式 创建型模式提供创建对象的机制, 能够提升已有代码的灵活性和可复⽤性. ...
- Hadoop 的三种运行模式_本地模式_伪分布式模式
演示的版本是:2.7.2 官方文档 Hadoop运行模式 Hadoop运行模式包括:本地模式.伪分布式模式以及完全分布式模式. Hadoop官方网站:http://hadoop.apache.org/ ...
- 原型和原型链原型继承_原型还是不原型:这就是问题所在。
原型和原型链原型继承 by Rishal Hurbans 由Rishal Hurbans 原型还是不原型:这就是问题所在. (To prototype or not to prototype: tha ...
- 代理模式 委派模式 策略模式_委派模式和策略模式
一.委派模式 委派模式(Delegate Pattern):指负责任务的调度和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果.(属于行 ...
- 如和退出 百度云暗黑模式_黑暗模式的过去和现在
如和退出 百度云暗黑模式 At Lunabee Studio, we attended in 2019 the Google I/O and the Apple WWDC conferences in ...
- 设计模式 - 结构型模式_外观模式
文章目录 结构型模式 概述 Case Bad Impl Better Impl 小结 结构型模式 结构型模式主要是解决如何将对象和类组装成较大的结构, 并同时保持结构的灵活和⾼效. 结构型模式包括:适 ...
最新文章
- 机器学习组队【计划及安排】
- HNOI2017 day1 T3 礼物
- mac安装多php环境变量配置,Mac如何安装多个php版本
- winform防止sqlserver注入_ASP.NET Core 中的 依赖注入介绍
- javaweb开发1.环境配置(javaweb插件下载及tomact在eclips中配置)
- 【Siddhi】Syntax error in SiddhiQL, no viable alternative at input
- phpfpm内存越来越高_DDR5内存规范发布
- 听孔文达老师《IT职业规划经验谈》WEBCAST笔记
- Servlet chapter 3
- Python机器学习的一些文档
- 使用VirtualBox安装Dos系统并配置masm汇编语言环境
- android 视频测试工具,安兔兔视频测试下载3.0 官方版-安卓盒子视频性能检测工具平板西西软件下载...
- 老机器上安装了kubuntu先尝试安装Manjaro但是鼠标按键无法使用彻底解决办法
- 癌症最新研究进展(2021年10月)
- 报错ValueError: check_hostname requires server_hostnam ImportError: cannot import name ‘imread’ from
- 职场四种人:打工者、职业人、企业人和社会人,你是那种人?
- java跳转kotlin页面_Kotlin:return与跳转
- 网站强制跳转到国家反诈中心如何解封
- ZOJ 2975	Kinds of Fuwas(暴力)
- 第二章:网络攻击原理与常用方法
热门文章
- 新品Demo —— ZStack CMP多云管理平台
- 用OpenStack构建南方电网广东公司能源云
- kali linux 桌面消失_Kali安装好后,需要修改的一些常用配置
- python随机抽号_Python基础:手把手以实例教你学随机数产生和字符/ASCII码转换
- 不平衡数据集_我们的不平衡数据集
- 聊天工具机器人开发_聊天机器人-精致的交流工具? 还是您的客户服务团队不可或缺的成员?...
- java混淆加密_源代码部分加密混淆方案
- java多表查询实体类_自己设计一个JAVA+MyBatis解析实体类多表通用查询
- 过椭圆外一点引两条切线方程_S16-2 二次曲线和圆方程
- kettle 零基础快速入门(一)