结构型: 外观模式 发表于 2017-06-17 | 分类于 设计模式 外观模式(Facade Pattern):是迪米特原则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类和子系统的耦合度。 优点 对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目。 实现了客户端与子系统之间的松耦合关系。 缺点 如果对客户端访问子系统做 ... 阅读全文 »
结构型: 装饰器模式 发表于 2017-06-17 | 分类于 设计模式 扩展功能 装饰器模式(Decorator Pattern):动态给一个对象增加一些额外的职责。是一种替代继承的技术,使用对象之间的关联关系。 优点 装饰模式比继承更灵活。 可以动态扩展一个对象的功能,通过配置文件再运行时选择不同的具体装饰类。 可以对一个对象进行多次装饰。 具体构件类和具体装饰 ... 阅读全文 »
结构型: 组合模式 发表于 2017-06-16 | 分类于 设计模式 树形结构的处理 组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体-部分”的层次结构。组合模式对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。 优点 组合模式可以清楚定义分层次的复杂对象。 组合模式为树形结构的面向对象实现提供了一种灵活的解决 ... 阅读全文 »
结构型: 桥接模式 发表于 2017-06-16 | 分类于 设计模式 处理多维度变化 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们可以独立变化。 如果某个类存在两个独立变化的维度,可以将这两个维度分离出来,使两者可以独立扩展,将两个独立变化的维度设计为两个独立的继承等级结构,并且在抽象层建立一个抽象关联,该关联关系类似连接的桥。 ... 阅读全文 »
Lucene查询语法 发表于 2017-06-15 | 分类于 Lucene 语法关键字: + - &$ || ! () {} [] ^ " ~ * ? : \。 查询 Term 单一查询词,eg:"hello" 词组 phrase,eg:"hello world" 查询 Field使用域名和关键字:,:仅对紧跟其后 ... 阅读全文 »
搜索过程分析 发表于 2017-06-15 | 分类于 Lucene Lucene的搜索过程: IndexReader 打开索引文件,读取并打开指向索引文件的流。 用户输入查询语句。 将查询语句转换为查询对象Query对象树。 构造Weight对象树,用于计算词的权重(仅计算搜索语句相关的部分)。 构造Scorer对象树,用于计算打分。 在构造Scorer对象树的过 ... 阅读全文 »
结构型:适配器模式 发表于 2017-06-06 | 分类于 设计模式 不兼容结构的协调 适配器模式(Adapter Pattern):将一个接口转换成希望的另一个接口,使接口不兼容的类可以一起工作。其别名为包装器(Wrapper)。 优点 将目标类和被适配类解耦。 增加了类的透明性和复用性。 通过配置文件可以更换适配器类,符合“开闭原则”。 缺点 Java只 ... 阅读全文 »
创建型:建造者模式 发表于 2017-06-06 | 分类于 设计模式 复杂对象的组装与创建 建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式一步一步的创建一个复杂对象,允许通过指定复杂对象的类型和内容就可以创建它们。 优点 客户端不需要知道产品内部组成的细节,将产品本身和产品的创建 ... 阅读全文 »
创建型:原型模式 发表于 2017-06-06 | 分类于 设计模式 对象的克隆 原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 创建克隆对象的工厂就是原型类自身,工厂方法由克隆方法来实现,克隆所创建的对象是全新的对象,在内存中拥有全新的地址。 优点 当创建新的对象较为复杂时,使用原型模式可以简 ... 阅读全文 »
windows环境下Charset.defaultCharset导致中文输出变成问号 发表于 2017-06-05 | 分类于 有趣的问题 问题描述在使用 SpringMVC 进行前后台数据交互的时候,前台使用 Ajax 请求后台数据,后台读取数据库返回 Json,前台显示 Json 数据时中文都变成问号。 解决过程一般中文编码问题都有几处源头,数据库编码、传递json数据编码、前台页面编码,这几部分不一致都可能导致中文乱码,可以肯定的 ... 阅读全文 »