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

昆明企业网站建设一条龙本溪北京网站建设

昆明企业网站建设一条龙,本溪北京网站建设,网站维护中模版,简述对网站进行评析的几个方面.说明#xff1a;本文介绍设计模式中#xff0c;创建型设计模式中的工厂模式#xff1b; 飞机大战 创建型设计模式#xff0c;关注于对象的创建#xff0c;本文介绍的简单工厂和工厂模式同样也是。举一个游戏例子#xff0c;如飞机大战游戏中#xff0c;屏幕中敌人类型…说明本文介绍设计模式中创建型设计模式中的工厂模式 飞机大战 创建型设计模式关注于对象的创建本文介绍的简单工厂和工厂模式同样也是。举一个游戏例子如飞机大战游戏中屏幕中敌人类型有坦克、飞机会随机出现在画面的上方 我们可以简单的将敌人抽象为一个抽象类然后分别创建对应的实现类如下 敌人抽象类注意属性的修饰符protected子类中需要用到 /*** 敌人抽象类*/ public abstract class Enemy {/*** 敌人的坐标*/protected int x;/*** 敌人的坐标*/protected int y;/*** 抽象方法*/public Enemy(int x, int y) {this.x x;this.y y;}/*** 绘制方法*/public abstract void show(); }具体实现类坦克 /*** 坦克*/ public class Tank extends Enemy{public Tank(int x, int y) {super(x, y);}Overridepublic void show() {System.out.println(坦克出现了坐标是 x , y);} }具体实现类飞机 /*** 飞机*/ public class AirPlane extends Enemy{public AirPlane(int x, int y) {super(x, y);}Overridepublic void show() {System.out.println(飞机出现了坐标是 x , y);} }客户端client import java.util.Random;/*** 客户端*/ public class Client {public static void main(String[] args) {// 屏幕宽度是100int screenLength 100;// 创建坦克Enemy tank new Tank(new Random().nextInt(screenLength),0);tank.show();// 创建飞机Enemy airPlane new AirPlane(new Random().nextInt(screenLength),0);airPlane.show();} }执行结果 分析以上创建方式有两点不足之处对象的创建和使用在一起耦合性太高创建对象的代码放到了客户端类里如果需要创建多个对象的话客户端的代码势必会越来越臃肿。 简单工厂 为了解决上面提到的两个问题耦合性高客户端代码臃肿我们可以使用简单工厂对上面的流程进行改进。如下创建一个简单工厂类将创建对象的步骤抽取到这里面 import java.util.Random;/*** 简单工厂*/ public class SimpleFactory {/*** 屏幕宽度*/private int screenLength;/*** 随机数*/private Random random;/*** 构造函数** param screenLength*/public SimpleFactory(int screenLength) {this.screenLength screenLength;this.random new Random();}/*** 创建敌人* param type* return*/public Enemy createEnemy(String type) {int x random.nextInt(screenLength);Enemy enemy null;switch (type) {case Tank:enemy new Tank(x, 0);break;case AirPlane:enemy new AirPlane(x, 0);break;default:throw new RuntimeException(unknown enemy type);}return enemy;} }这样客户端就可以使用这个简单工厂来创建对象了如下 /*** 客户端*/ public class Client {public static void main(String[] args) {int screenLength 100;new SimpleFactory(screenLength).createEnemy(Tank).show();new SimpleFactory(screenLength).createEnemy(AirPlane).show();} }执行结果 分析通过简单工厂对对象的创建进行了封装使客户端的代码简单、清爽。但是如果需要增加敌人类型的话我们就需要去修改这个简单工厂类新增case分支这不利于后续的代码扩展。 工厂模式 使用工厂模式可以弥补简单工厂的缺点。我们可以创建一个工厂接口让后续所有的敌人对象都实现这个接口并实现其抽象方法把对象的创建放到具体实现类中这样后续无论新增多少种敌人类型都只要实现这个接口即可不需要对原有系统进行修改。如下 工厂接口 /*** 敌人工厂接口*/ public interface Factory {/*** 创建敌人* * param screenLength* return*/Enemy createEnemy(int screenLength); }飞机工厂 import java.util.Random;/*** 飞机工厂*/ public class AirPlaneFactory implements Factory{Overridepublic Enemy createEnemy(int screenLength) {return new AirPlane(new Random().nextInt(screenLength), 0);} }坦克工厂 import java.util.Random;/*** 坦克工厂*/ public class TankFactory implements Factory{Overridepublic Enemy createEnemy(int screenLength) {return new Tank(new Random().nextInt(screenLength), 0);} }现在如果需要新增一个Boss对象只需要创建对应的Boss对象及其工厂实现类即可如下 Boss类 /*** Boss*/ public class Boss extends Enemy{public Boss(int x, int y) {super(x, y);}Overridepublic void show() {System.out.println(Boss出现了坐标是 x , y);} }Boss工厂实现类用于创建Boss import java.util.Random;/*** Boss工厂*/ public class BossFactory implements Factory {Overridepublic Enemy createEnemy(int screenLength) {// Boss出现在屏幕正中间return new Boss(new Random().nextInt(screenLength) / 2, 0);} }客户端代码客户端只需创建工厂对象调用其方法即可 /*** 客户端*/ public class Client {public static void main(String[] args) {// 屏幕宽度int screenLength 100;// 创建坦克Factory tankFactory new TankFactory();for (int i 0; i 10; i) {tankFactory.createEnemy(screenLength).show();}// 创建飞机Factory airFactory new AirPlaneFactory();for (int i 0; i 10; i) {airFactory.createEnemy(screenLength).show();}// 创建BossFactory boosFactory new BossFactory();boosFactory.createEnemy(screenLength).show();} }执行结果 总结 本文参考《设计模式的艺术》、《秒懂设计模式》两书
http://www.hkea.cn/news/14429438/

相关文章:

  • 网站后台html5模板网站内页修改关键字
  • 天津哪家公司做公司网站挖掘关键词的工具
  • 时尚大气网站设计怎么自己改自己做的网站的图片
  • 无忧中英繁企业网站系统通用版网站怎么发布信息
  • 网站建设 用ftp上传文件学c还是网站开发
  • 哪个网站做外贸生意ppt下一页
  • 广州网站优化价格jsp做网站视频教程
  • 网站建设相关资料文件icp备案添加网站
  • 温州做网站的装修免费咨询平台
  • 怎么做王者荣耀网站郑州世界工厂网
  • 说明网站建设与网站运营的区别网络品牌推广公司
  • 驻马店 网站建设文书写作网站
  • 网上书店网站开发代码企业信息管理系统的发展历程
  • 西安哪家公司做的网站好app下载软件电脑版
  • 网站开发工程师证书教资注册网站
  • 新开传奇网站曾劲松seo企业推广案例
  • 有什么网站可以免费注册徐州社交网站
  • 企业网站优化服务主要围绕什么百度关键词价格排行榜
  • 哈尔滨做网站需要多少钱淘宝的网站怎么做的好
  • 同安区建设局网站招投标为什么wordpress升级
  • 上海市建设安全协会网站一360wordpress数据库设置
  • 制作网站教学设计flask做网站工具
  • 网站的建设方法包括什么wordpress目录分站
  • 建站之星服务器filetype ppt 网站建设
  • 网站外链快速建设页面设计设计风格
  • 如何下载网站模版网站建设优化需要懂那些知识
  • 茂港网站开发公司一个公司备案多个网站要注意
  • 官方网站建设合作协议wordpress 调用 页眉
  • 沈阳建设工程信息网官网新网站python做简单网站
  • asp 公司网站wordpress 环保主题公园