设计与算法
文章平均质量分 79
索隆
路漫漫其修远兮,吾将上下而求索
展开
-
设计模式之二 --- Singleton 模式 .
【1】基本概念 Singleton 是一种创建性模式,它用来确保只产生一个实例,并提供一个访问它的全局访问点。对一些类来说,保证只有一个实例是很重要的,比如有的时候,数据库连接或 Socket 连接要受到一定的限制,必须保持同一时间只能有一个连接的存在。【2】简单分析 我们先来看一下该设计模式的UML结构图:为了实现 Singleton 模式,我们转载 2012-04-12 23:43:16 · 492 阅读 · 0 评论 -
设计模式(九)---组合模式
将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对*的使用具有一致性。"组合模式个人理解就是在共同的父类或抽象类中定义一个容器,这个容器的对象类型还是本身,并定义容器的维护方法。这种结构很像树结构。理解成树结构就没什么好说的了。下面给出例子:package test.design.composite.one;import原创 2013-07-17 13:34:24 · 1035 阅读 · 0 评论 -
设计模式(十)---代理模式与装饰模式
之所以把这两种模式放在一起说,是因为我发现这了两种模式几乎一模一样!从网上也搜了一些资料,发现两者还是有一些区别的。我们在学习的同时也把这种困惑搞清楚。定义:代理模式,为其他对象提供一种代理以控制对这个对象的访问。装饰模式,动态地给一个对象添加一些额外的职责。代理模式,很好理解,就是把一个对象再次封装,以后就对封装的对象访问就可以了。因为代理对象已经取代了被代理原创 2013-07-17 15:55:35 · 1095 阅读 · 0 评论 -
设计模式(八)---桥接模式
概念:桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编写量。什么情况下会用桥接模式?简单的说就是我们在抽象对象的特征时,对象的特征属性又很抽象,不得不把属性再次抽象。否则的话,具体子类的数量将会成几何增长,而且不易扩展。没办法维护现有代码。举例,原创 2013-07-16 18:13:43 · 952 阅读 · 0 评论 -
设计模式(七)---适配器模式
网摘:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那个类可以一起工作。 适用性 1.你想使用一个已经存在的类,而它的接口不符合你的需求。 2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作。 3.你想使用一些已经存在的子类,但是不可能对每一个都进行原创 2013-05-29 17:15:19 · 881 阅读 · 0 评论 -
设计模式(六)---原型模式
原型模式是一种对象创建型模式用原型实例指定创建对象的种类并且通过复制这些原型创建新的对象。原型模式允许一个对象再创建另外一个可定制的对象无须知道任何创建的细节。原型模式的基本工作原理是通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝原型自己来实现创建过程。原型模式包含三个角色,抽象原型类:定义具有克隆自己的方法的接口具原创 2013-05-13 22:26:44 · 677 阅读 · 0 评论 -
设计模式(三)---抽象工厂模式
具体工厂类:生产创建某一类具体产品对象。抽象产品类可以使用接口或者父类来描述产品对象的行为特征。具体产品类就是某一具体的对象。那么抽象工厂模式和工厂模式的不同之处呢?其实最大的不同就在于,在产品类的结构更加复杂时,抽象工厂模式针对不同的产品族(就是一类产品对象)定义了不同的行为,也就是在父类或接口中,定义了不同的产生方法。不同的产品族调用各自的创建方法。同时不同的产原创 2013-05-12 16:55:21 · 967 阅读 · 0 评论 -
设计模式(二)---工厂模式
工厂模式(factory)涉及到4个角色:抽象工厂类角色,具体工厂类角色,抽象产品类角色和具体产品类角色。抽象工厂类角色使用接口或者父类来描述工厂的行为,具体工厂类角色负责创建某一类型的产品对象。抽象产品类可以使用接口或者父类来描述产品对象的行为特征。具体产品类就是某一具体的对象。工厂模式不同于静态工厂模式的地方:工厂模式在工厂类也实现了多态,而不仅仅是在产品对原创 2013-05-12 16:45:56 · 979 阅读 · 0 评论 -
设计模式(五)---建造者模式
建造者模式(builder)可以将部件和其组装过程分开.一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节.什么情况下会用到建造者模式?个人理解,当我们创建的对象在创建时需要逻辑的时候。比如,一个简单的pojo对象,我们想要创建,直接就可以new出来,没有什么逻辑。当有一个复杂的对象,你想要创建它时,它的各个属性之间原创 2013-05-12 22:55:18 · 708 阅读 · 0 评论 -
设计模式(四)---单例模式
单例模式就是产生一个对象实例,供外外部访问。它的应用场景就是在这个类在全局真资源需要统一访问,否则会造成混乱时,才有必要设计成单例。懒汉式,就是在使用这个对象时,才去查看这个对象是否创建,如果没创建就马上创建,如果已经创建,就返回这个实例。饿汉式,在加载这个类的时候就先创建好一个对象实例,等待调用。两者的优缺点也能猜到,使用懒汉式,在反应速度上肯定要比饿汉式慢。原创 2013-05-12 17:32:07 · 786 阅读 · 0 评论 -
设计模式(一)--静态工厂模式
静态工厂模式(static factory)也叫简单工厂模式。涉及到3个角色:工厂类角色,抽象产品类角色和具体产品类角色。抽象产品类可以使用接口或者父类来描述产品对象的行为特征。具体产品类就是某一具体的对象。静态工厂类有一个静态的方法,含有判断逻辑,决定要创建哪一种具体的产品对象。其设计模式如下:抽象产品类 IProductpackage or原创 2013-05-12 16:38:12 · 6512 阅读 · 0 评论 -
一个字符串是匹配算法题的解题思路
package org.test.algo;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.TreeMap;/** * 原题: 假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配, 比如:abcda和adabc,由于出现的字符个数都是原创 2013-03-20 23:28:21 · 859 阅读 · 0 评论 -
程序员必知的8大排序
原文:http://blog.csdn.net/pzhtpf/article/details/7560312好东西,值得收藏 前几天,看到一篇前辈的博文“程序员必知的8大排序”,不禁的手痒起来,重新翻开严蔚敏老师的《数据结构》复习了一遍,然后一一的用java去实现,其中有不足之处,还望各位道友指正出来。 先来看看8种排序之间的关系: 1, 直接插入排序转载 2012-05-28 16:07:32 · 927 阅读 · 0 评论 -
设计模式之一---工厂方法模式【Factory Method模式】
在设计模式中,Factory Method模式是一种比较简单的设计模式,应用比较广泛,但也是一种比较重要的设计模式之一。在很多地方我们都会看到xxxFactory这样命名的类,那么,什么是Factory Method,为什么要用这个模式,如何用Java语言来实现该模式?【1】基本概念 FactoryMethod是一种创建性模式,它定义了一个创建对象的接口,但是却让子类来决转载 2012-04-12 23:11:31 · 460 阅读 · 0 评论 -
一道算法题
package test.algo;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.uti原创 2013-07-18 11:38:33 · 1233 阅读 · 0 评论