龙潭书斋 -- 303




200x200


概述其实各种面向对象编程语言大多提供了迭代器模式的实现和具体的工具类迭代器模式主要是提供一种顺序访问一个聚合对象中的各个元素的方法,而不需要关心具体对象的类型和内部表示,在有些语言中,也被称为“游标”

#技术帖    #龙潭书斋    #java    #面向对象   
概述有时我们需要维护一个双向映射,也就说,有时我们需要一个 key-value 的集合的同时还需要一个 value-key 的集合,那么,为了解决这个问题,我们需要维护两个 Map:Map<Long, String> fruitIdToName = new HashMap<>(); Map<String, Long> fruitNameToId = new HashMap<>(); fruitIdToName.put(2L, "apple"); fruitIdToName.put(3L, "banana"); fruitNameToId.put("apple", 2L);  上面的代码维护了两个 HashMap,分别是水果 Id 到水果名称的映射,和水果名称到水果 Id 的映射然而,维护两个 HashMap 的成本是很高的,你会发现在例子中,我们将无法通过 fruitIdToName 中存在的 banana 值作为 key 查找到 fruitNameToId&n
#技术帖    #龙潭书斋    #java    #集合   
概述上一篇日志中,我们介绍了 Guava 的可重复 key 的 Set -- Multiset 类型元素可重复的 Set -- Multiset本篇日志中,我们就来介绍 Guava 提供的另一个容器,可重复 key 的 Map -- Multimap 假设我们需要经营一家超市,超市中有若干库区,我们创建一个水果类,其中有两个字段,分别是水果的名称和所在库区号,那么现在我们需要了解一批水果中,每个库区各有多少水果,分别是什么,那么我们就需要这样的代码:package com.techlog.test.testspring.service; import java.util.*; /** * Created by techlog on 2017/4/3. */ public class WorkMain { private final static List<Fruit> FRUITS = Arrays.asList(new Fruit("apple", 1), new Fruit("bnana", 1), new Fruit("
#技术帖    #龙潭书斋    #容器    #list   

200x200


概述解释器模式主要是用来解释一种给定的语言的文法表示的最常见的应用是计算器的实现,算式 291 + 18 - 279 就是一种公式语言,他定

#技术帖    #龙潭书斋    #词法分析    #语法分析   
概述此前我们曾经介绍过,java 提供了丰富的容器类来解决一组对象的管理问题:Collection 及其相关实现的容器简介及用法Map 简介及用法但是对于复杂的情况,jdk 提供的容器类还是显得有些不足,guava 引入了一系列新的集合类,来扩充 JDK 集合框架,令人欣慰的是,guava 的集合接口完全遵循了 jdk 的思想和理念 众所周知,jdk 的 Set 是一个继承自 Collection 的接口,用于实现不重复的元素的集合,但有时,我们是很需要一个值能够重复的 Set 的,最常见的需求就是我们需要集合中不重复的元素的集合,那么我们需要一个 Set,但是我们还需要知道集合中各个元素的出现次数,那么 Set 就无法做到了,仅适用 List 也是难以满足的,非要实现的话,代码的复杂度就会变得很高而不易于维护Guava 提供的 Multiset 解决了上述问题,简单地说,Multiset 提供了一个元素可重复的 Set,事实上,这在 C++ 的 STL 中早已有所提供,大概 
#技术帖    #龙潭书斋    #java    #jdk   

200x200


概述命令模式将一个请求封装成一个对象,从而让你可以用不同的请求对客户进行参数化,或者将请求排队或者记录日志,以及可以支持可撤销的操作有时,任务的执行者并不知道该进行什么操作,只有调用者才知道,典型的是

#技术帖    #龙潭书斋    #command    #java   

200x200


概述职责链模式让多个对象都有机会处理请求,从而避免了请求发送者与处理者之间的耦合关系有时,我们的系统中拥有多个处理请求的对象,但当系统获取到请求时并不知道该由哪个对象来处理,这样只要让请求在请求链上依

#技术帖    #龙潭书斋    #设计模式    #design pattern   
概述正如此前我们介绍的,设计模式分为三种:创建型模式结构型模式行为模式 本章节我们就来学习行为模式 行为模式行为模式涉及到算法和对象职责的分配,他描述了对象或类的模式,同时还描述了他们之间的通信模式,从而描述了在运行时难以跟踪的复杂控制流行为模式共有 11 种:职责链模式 -- ChainOfResponsibility命令模式 -- Command解释器模式 -- Interpreter迭代器模式 -- Iterator中介者模式 -- Mediator备忘录模式 -- Memento观察者模式 -- Observer状态模式 -- State策略模式 -- Strategy模板方法模式 -- TemplateMethod访问者模式 -- Visitor 分类在此前的综述中,我们介绍过,除了 Interpreter 与 TemplateMethod 两个作用于类的模式外,其他模式都是作用于对象的设计模式概述 类行为模式Interpreter 与 
#读书笔记    #技术帖    #龙潭书斋    #设计模式   

200x200


概述顾名思义,代理模式就是为其他对象提供一种代理以控制对这个对象的访问代理对象的主要目的是为了对对象进行访问控制,来让我们在只有确实需要对象的时候才创建和初始化对象对于一个开销很大的对象,应该根据需要

#读书笔记    #技术帖    #龙潭书斋    #面向对象   

200x200


概述想象一下如果我们要制作一个文本编辑器,如果将各个字符和嵌入的表格图形都作为单独的对象,这样的运行开销是非常巨大而难以承受的,但是如果不这样做,又无法实现很多灵活性的要求 如上图所示,对于

#读书笔记    #技术帖    #龙潭书斋    #设计模式   



京ICP备15018585号