当前位置: 首页 > news >正文

网站开发 英语词汇建设网站企业登录

网站开发 英语词汇,建设网站企业登录,wordpress代码语言,wordpress弹窗插件我们一定对类的实例化比较熟悉#xff0c;前面我们说的单例、还有3种工厂模式都是通过new关键字来创建对象#xff0c;下面我们来了解一种新的对象创建的方式。 1. 定义 原型模式也是一种创建型的设计模式#xff0c;实现和原理总体比较简单#xff0c;一句话总结呢#… 我们一定对类的实例化比较熟悉前面我们说的单例、还有3种工厂模式都是通过new关键字来创建对象下面我们来了解一种新的对象创建的方式。 1. 定义 原型模式也是一种创建型的设计模式实现和原理总体比较简单一句话总结呢就是可以实现用已有的对象创建新的对象而不是用类来实例化对象这样可以起到提升效率的目的。 众所周知类的实例化可以创建对象但其实这是一个比较耗时耗力的工作尤其是在大量实例化对象的业务场景下可能会对系统的性能造成很大的影响。这时候原型模式就可以很好的解决问题用已有的对象来生成对象的副本这里已有的对象就是原型对象副本对象就是拷贝对象。这样对于那些有非常复杂的初始化的操作或者是需要消耗大量资源的情况原型模式的优势就体现出来了。 2. 代码实现 我们来举一个飞机大战的游戏例子游戏的场是在手机屏幕上方飞下来很多敌机而我方战机只有一架其中敌机的飞行轨迹必须是呈上下直线型的我方战机可以上下左右移动。因为本篇我们学习原型模式所以重点关照的是敌机我方战机其实可以通过前面讲的单例模式实现。 2.1 实例化方式 假设游戏过程有500架敌机出现通常情况下使用实例化创建对象的方式代码实现可以这样。 public class EnemyPlain {// x坐标private int x;// y坐标private int y;// 敌机固定x坐标只能上下移动public EnemyPlain(int x) {this.x x;}public int getX() {return x;}public int getY() {return y;}// 手柄每调用一次setY方法Y坐标加一public void setY() {y ;} }客户端获取敌机的方法如下 public class Client {public static void main(String[] args) {// 500架敌机集合ListEnemyPlain enemyPlains new ArrayList();// 实例化500架敌机for (int i 0; i 500; i) {// 随机出现在0~200的坐标内EnemyPlain enemyPlain new EnemyPlain(RandomUtil.randomInt(200));enemyPlains.add(enemyPlain);}} }这种代码实现的方式是很常见的但要命的是这500个对象在客户端初始化的时候就会被创建出来500个对象会占用大量的堆内存空间这还是定义的对象只有两个属性的前提下。另外CPU本身就是很宝贵的资源一次性实例化500个对象本身也会消耗系统很大的系统资源极端的情况下会造成游戏界面卡顿造成不友好的用户体验下面我们用原型模式来试一下。 2.2 原型模式 原型模式的代码实现首先把原型类实现java.lang.Clone接口接着实现 clone()方法。 // 1.实现java.lang.Clone接口 public class EnemyPlain implements Cloneable {// x坐标private int x;// y坐标private int y;// 敌机固定x坐标只能上下移动public EnemyPlain(int x) {this.x x;}public int getX() {return x;}public int getY() {return y;}// 手柄每调用一次setY方法Y坐标加一public void setY() {y ;}public void setX(int x) {this.x x;}// 重写克隆 clone 方法Overridepublic EnemyPlain clone() throws CloneNotSupportedException {return (EnemyPlain)super.clone();} }客户端获取原型拷贝副本代码实现 public class ClientAno {public static void main(String[] args) throws CloneNotSupportedException {// 创建原型对象EnemyPlain enemyPlain new EnemyPlain(100);// 存放500架敌机ListEnemyPlain list new ArrayList();// 克隆500架敌机for (int i 0; i 500; i) {EnemyPlain clonePlain enemyPlain.clone();// 设置横坐标clonePlain.setX(RandomUtil.randomInt(200));list.add(clonePlain);}} }这里需要特别说明clone()方法并不是从Cloneable接口实现来的而是继承自java.lang.Object对象。另外一般在获取克隆对象的时候可以借助工厂模式一块实现。 3. UML类图 下面就以上面飞机大战这个游戏的这个例子画一个原型模式的UML类图。
http://www.zqtcl.cn/news/280746/

相关文章:

  • 卡盟网站建设wordpress优化代码
  • 做网站需要什么技术员商城型网站开发网站建设
  • discuz做地方门户网站网站大全免费完整版
  • 莆田人做的网站一天赚2000加微信
  • 阿里云网站访问不了怎么办做网站二维码
  • 手机商城网站建设可采用的基本方式有
  • 网站备案管理做广告公司网站建设价格
  • 绵阳专业网站建设公司上海外贸公司排名榜
  • 如何做英文系统下载网站快速排名工具免费
  • 苏州建网站必去苏州聚尚网络网页视频提取在线工具
  • 网站建设服务市场分析百度集团
  • 网站怎么企业备案信息做网站业务员如何跟客户沟通
  • 如何网站推广知名的集团门户网站建设费用
  • 网站入口设计规范专门做喷涂设备的网站
  • 最简单网站开发软件有哪些企业管理培训课程培训机构
  • 桂城网站制作公司wordpress 导航网站
  • 一个公司做网站需要注意什么条件网站备案 登陆
  • 百度网站介绍显示图片装修公司一般多少钱一平方
  • 网站销售如何做业绩我找伟宏篷布我做的事ko家的网站
  • 建立网站有哪些步骤?jsp网站开发详细教程
  • 网站怎么做直播功能旅游做攻略用什么网站
  • 企业外贸营销型网站如何写好软文推广
  • 免费建站的网址个人网站建设程序设计
  • 淘宝网站建设违规吗上海大公司
  • 大淘客怎么自己做网站自己开网站能赚钱吗
  • 大型门户网站开发北京网站建设管庄
  • 大连建设工程网站网站建设组织管理怎么写
  • wordpress英文站注册域名需要注意什么
  • 营销型网站的建设重点是什么深圳logo设计公司排名
  • 做网站的用什么软件呢网站排名优化服务公司