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

定制家具网站源代码薛城做网站

定制家具网站源代码,薛城做网站,保定网站建设制作开发平台,企业云平台写在前面 本文看下一种结构型设计模式#xff0c;享元模式。 1#xff1a;介绍 1.1#xff1a;什么时候使用享元模式 当程序需要大量的重复对象#xff0c;并且这些大量的重复对象只有部分属性不相同#xff0c;其他都是相同的时候#xff0c;就可以考虑使用享元设计…写在前面 本文看下一种结构型设计模式享元模式。 1介绍 1.1什么时候使用享元模式 当程序需要大量的重复对象并且这些大量的重复对象只有部分属性不相同其他都是相同的时候就可以考虑使用享元设计模式设计模式来实现。典型的如围棋游戏中的棋子除了颜色和位置不同外其他都相同。射击游戏中的子弹除了大小型号杀伤力等不同外其他都相同。 1.2UML类图 享元设计模式包含如下元素 1Flyweight定义享元对象的公共操作 2ConcreteFlyweight具体的享元对象 3FlyweightFactory享元对象工厂负责生产享元对象方便客户端获取享元对象的同时也可以缓存享元对象防止因为创建过多的对象而导致内存溢出等问题想一下射击游戏用户如果是用机关枪一直突突突得创建多少对象啊UML图如下 另外享元设计模式分为内部状态和外部状态如围棋游戏棋子的黑色和白色就是内部状态在对象的内部定义和维护是可以共享的但是落子的位置则是各不相同的就是外部状态需要外部传入。如果是工作中认为场景适合使用享元设计模式则一定要考虑清楚内部状态和外部状态的问题。 2实例 源码 。 2.1场景 围棋游戏创建游戏中的黑子和白子。 2.2程序 享元接口 public interface Chess {// 绘制棋子落子走一步棋// 位置外部状态由外部传入void draw(int x,int y); }内部状态枚举 public enum Color {BLACK(黑色), WHITE(白色);private String name;// 默认就是private的并且不能反射暴力也不行Color(String name) {this.name name;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getAlias() {return this.name;} }具体享元类 黑子和白子类 //黑棋 public class BlackChess implements Chess {// 内部状态共享private final Color color Color.BLACK;private final String sharp 圆形;public Color getColor() {return color;}// 外部状态Overridepublic void draw(int x, int y) {System.out.println(String.format(%s%s棋子置于%d%d处, sharp, color.getAlias(), x, y));} }//白棋 public class WhiteChess implements Chess {//内部状态共享private final Color color Color.WHITE;private final String sharp 圆形;public Color getColor() {return color;}Overridepublic void draw(int x, int y) {System.out.println(String.format(%s%s棋子置于%d%d处, sharp, color.getAlias(), x, y));} }享元工厂类 public class ChessFactory {private static final MapColor, Chess chessMap new HashMap();public static Chess getChess(Color color) {Chess chess chessMap.get(color);if (chess null) {chess color Color.WHITE ? new WhiteChess() : new BlackChess();chessMap.put(color, chess);}return chess;} }测试 public class FlyweightClient {Testpublic void playChess() {//下黑子Chess backChess1 ChessFactory.getChess(Color.BLACK);backChess1.draw(2, 5);//下白子Chess whiteChess ChessFactory.getChess(Color.WHITE);whiteChess.draw(3, 5);//下黑子Chess backChess2 ChessFactory.getChess(Color.BLACK);backChess2.draw(2, 6);System.out.println(String.format(backChess1:%d | backChess2:%d | whiteChess:%d,backChess1.hashCode(), backChess2.hashCode(), whiteChess.hashCode()));} }运行 圆形黑色棋子置于25处 圆形白色棋子置于35处 圆形黑色棋子置于26处 backChess1:1327763628 | backChess2:1327763628 | whiteChess:1915503092Process finished with exit code 0写在后面 参考文章列表 秒懂设计模式之享元模式Flyweight Pattern 。
http://wiki.neutronadmin.com/news/107007/

相关文章:

  • 网站建设费怎么写会计科目网站上传格式
  • 响应式网站模板怎么得到wordpress文章加图片
  • 微信网站开发js框架学校网站建设申请报告
  • 专注江苏网站建设大型网站开发 广州
  • 抖音小程序推荐采集网站seo
  • 深圳cms建站系统建设工程资讯哪个网站好
  • 北京集团 网站建设响应式网站和自适应
  • 用dw制作网站模板下载下载软件的应用商店
  • 照片墙网站源码网店推广方案策划书
  • 建设公司网站管理制度的意义wordpress更改文章宽度
  • 做期货看啥子网站如何加强企业网站建设 论文
  • 中山网络公司网站建设做外贸用哪个网站好
  • 建设网站 宣传平台企业网站建设毕业设计
  • 昆明自助建站模板沈阳城乡建设工程信息网
  • 襄阳网站建设xtehuswordpress 数据库导入
  • 单位做网站资料需要什么软件新开发的app怎么推广
  • 加强公司门户网站建设wordpress手机导航三横拦
  • 12306网站哪个公司做的重庆网站建设公
  • 贵阳网站建设1685建立购物网站
  • 万盛建设局官方网站云浮网站网站建设
  • 贵阳门户网站建设3d建模自学
  • 做书籍的网站网站建设自我总结
  • 福建平潭建设局网站seo薪资seo
  • 购物网站开发背景需求搭建一个论坛
  • 到哪个网站做任务做网站用什么语言高效
  • 广西桂林漓江南京百度推广优化排名
  • 承德网站开发区地税西宁网站建设 哪家好
  • 中国能源建设集团有限公司网站金华网站建设大型网页建设
  • 做彩票网站要什么接口企业备案域名
  • 字体排版设计网站如何利用云服务器进行网站建设