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

东莞建材网站建设看男科比较正规的医院

东莞建材网站建设,看男科比较正规的医院,长沙装修网,网站设计与网页制作岗位招聘信息享元模式-Flyweight 享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。 本文中的例子如下: 使用享元模式: 小明想看编程技术的书, 就到家里的书架上拿, 如果有就直接看, 没有就去买一本, 回家看. 看完了就放到家里… 享元模式-Flyweight 享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。 本文中的例子如下: 使用享元模式: 小明想看编程技术的书, 就到家里的书架上拿, 如果有就直接看, 没有就去买一本, 回家看. 看完了就放到家里的书架上, 以后再想看了直接就在书架上拿, 不需要再去买同样的这本书了. 不适用享元模式: 小明想看编程技术的书, 就去书店里买一本回家看, 买完后看完了, 书就不知道丢到了哪里去了. 下次想看的时候就找不到了, 还是得去书店里重新买......又得花钱....然而并不长记性, 这回买完了, 看完了, 又丢到一边...下次还是得再买...   Java中实例化一个对象 vs 小明买一本书 在Java中的实例化一个对象, 就像是在买一本书, Java中的对象会随着作用域的退出, 对象会失去引用, 过后就会被垃圾收集器标记, 进行回收. 就相当于小明买完了一本书, 书就丢到了一边, 妈妈收拾屋子就把这本书识别为了垃圾, 就给扔掉了. (被妈妈收走是被动导致的小明每次都重新买一本书, 也有可能小明主动地每次看书都重新买一本, 有钱任性...这种有钱人性的行为在编程语言里就是每次都new一个对象, 而从来不去考虑复用)   Java中把对象放进一个容器里进行维护 vs 小明看完书把书放到书架上 (下面的相同颜色表示相同的行为, 可以互相对照) 在Java中:   使用完一个临时实例化的对象后, 如果以后还想复用, 那么就可以放到一个容器里(对象管理器), 或者更直接的说就比如存到一个HashMap里, 需要用的时候以后从里面直接取出来. 这样HashMap对实例化的对象持有引用, 就不会被GC了, 这样该对象就可以常驻内存, 可以复用了, 不用再实例化同样的一个对象了. 小明:    看完了一本书, 把书放到了书架上, 这样妈妈就知道这本书是小明需要的东西, 就不会把它当成垃圾来处理. 这样这本书就会一直在家里存在, 小明想看的时候, 就到家里的书架拿就可以看了, 不用再重新买同样的一本书了.   BooK接口 书的统一定义.书在本里子中是享元模式里被共享的对象. 应该被放到书架上复用, 而不是买次都重新买. /*** 书的统一抽象, 书可以被读*/ public interface Book {void read(); } HeadFirstJavaScript类 /*** HeadFirst JavaScript*/ public class HeadFirstJavaScript implements Book {Overridepublic void read() {System.out.printf(这是一本HeadFirst JavaScript. (书的编号是:%s)\n, System.identityHashCode(this));} } KotlinInAction类 /*** Kotlin实战*/ public class KotlinInAction implements Book {Overridepublic void read() {System.out.printf(这是一本Kotlin实战. (书的编号是:%s)\n, System.identityHashCode(this));} } PythonCookBook类 /*** Python编程手册*/ public class PythonCookBook implements Book {Overridepublic void read() {System.out.printf(这是一本Python编程手册. (书的编号是:%s)\n, System.identityHashCode(this));} } BookFactory类 import java.util.EnumMap; import java.util.Map;public class BookFactory {public enum BookType {PYTHON, JAVASCRIPT, KOTLIN}private final MapBookType, Book shelf;public BookFactory() {shelf new EnumMap(BookType.class);}/*** 想读一本书的话就通过这里来get.* 如果书架里有, 那么就从书架里拿* 如果书架里没有, 那么就从书店买一本看, 然后放到书架上*/public Book getBook(BookType type) {Book book shelf.get(type);if (book null) {switch (type) {case PYTHON:book new PythonCookBook();shelf.put(type, book);break;case JAVASCRIPT:book new HeadFirstJavaScript();shelf.put(type, book);break;case KOTLIN:book new KotlinInAction();shelf.put(type, book);break;default:break;}}return book;} } Main 运行/模拟场景 public class Main {public static void main(String[] args) {BookFactory bookFactory new BookFactory();bookFactory.getBook(BookFactory.BookType.JAVASCRIPT).read();bookFactory.getBook(BookFactory.BookType.JAVASCRIPT).read();bookFactory.getBook(BookFactory.BookType.PYTHON).read();bookFactory.getBook(BookFactory.BookType.PYTHON).read();bookFactory.getBook(BookFactory.BookType.KOTLIN).read();bookFactory.getBook(BookFactory.BookType.KOTLIN).read();bookFactory.getBook(BookFactory.BookType.KOTLIN).read();// 书的编号一样, 说明书复用了, 而不是每次都买一个新的} }结果如下 :  如果对象不是共享的, 也就是非享元模式, 那么Kotlin实战的三次的书编号都会是不一样的, 因为每次看这本书, 都是新买的, 最终会导致买三次Kotlin实战这本书, 同样的书买三次多浪费啊.  而本文的例子使用了享元模式, 拿了三次Kotlin实战这本书, 每次编号都是1360875712, 说明从头到尾都是同一本书, 没有造成浪费. 转载于:https://www.cnblogs.com/noKing/p/9072910.html
http://www.pierceye.com/news/677531/

相关文章:

  • h5创建网站网页设计主题推荐
  • 35开始学网站开发崇信县门户网
  • 一站式企业服务wordpress 网站登录
  • 网站上传工具有什么甘南北京网站建设
  • 株洲做网站那家好wordpress调用当前页文章
  • 想学做网站报班免费做一个自己app
  • 网站链接查询经典的公司简介范文
  • 网站猜你喜欢代码专门做房产的网站
  • 网页设计与网站建设题库企业logo设计免费
  • 深圳比较有名的设计公司大连seo推广优化
  • 宁波住房和城乡建设局网站最新上市新手机
  • 重庆做网站公司学校做网站方案
  • 网站建站建设价格酷家乐软件下载电脑版
  • 关于做网站的搞笑段子仿淘宝网站
  • 免费建网站的网站搭建价格表
  • 茶山网站仿做河池公司网站开发价格
  • 珠海网站制作推广公司哪家好做网站页面怎么做
  • 丰润网站建设怎么开网店流程
  • 电子商务网站建设的参考文献硬件开发平台是什么意思
  • 杭州做网站 做小程序自助建站免费永久
  • 软件培训网站建设鹤山市网站建设公司
  • 网站的验证码是怎么做的wordpress团购插件
  • 邯郸网站设计注册贵阳网站建设天锐科技
  • 网站建设服务费税率多少WordPress文档批量发布接口
  • 云服务器网站配置网页界面设计中一般使用的分辨率是多少
  • 网站域名销售wordpress文章入口设置
  • 上海做网站较好的公司c 做网站
  • 代发货网站系统建设螺栓球网架
  • 做书的网站有哪些内容吗电商平台定制
  • 网站建设与推广长春云电脑永久免费版手机版