
转截
cxs4808
这个作者很懒,什么都没留下…
展开
-
23种设计模式之工厂方法模式
2 解决方案2.1 工厂方法模式来解决 用来解决上述问题的一个合理的解决方案就是工厂方法模式。那么什么是工厂方法模式呢?(1)工厂方法模式定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。 (2)应用工厂方法模式来解决的思路 仔细分析上面的问转载 2012-12-07 14:17:56 · 359 阅读 · 0 评论 -
23种设计模式之迭代模式2
14.3 模式讲解14.3.1 认识迭代器模式(1)迭代器模式的功能迭代器模式的功能主要在于提供对聚合对象的迭代访问。迭代器就围绕着这个“访问”做文章,延伸出很多的功能来。比如:以不同的方式遍历聚合对象,比如向前、向后等对同一个聚合同时进行多个遍历以不同的遍历策略来遍历聚合,比如是否需要过滤等多态迭代,含义是:为不同的聚合结构,提供统一的迭代接口,也就是说通过一转载 2012-12-10 14:24:53 · 406 阅读 · 0 评论 -
23种设计模式之组合模式
15.2 解决方案15.2.1 组合模式来解决用来解决上述问题的一个合理的解决方案就是组合模式。那么什么是组合模式呢?(1)组合模式定义 (2)应用组合模式来解决的思路 仔细分析上面不用模式的例子中,要区分组合对象和叶子对象的根本原因,就在于没有把组合对象和叶子对象统一起来,也就是说,组合对象类型和叶子对象类型是完全不同的类型,这导致转载 2012-12-10 14:27:39 · 390 阅读 · 0 评论 -
23种设计模式之外观模式
package dp.facade; public interface GuangQuan { /** * 调光圈方法 */ public void tiaoGuangQuan(); } package dp.facade; public class GQImpl impleme转载 2012-12-10 09:15:46 · 334 阅读 · 0 评论 -
23种设计模式之原型模式2
用来解决上述问题的一个合理的解决方案就是原型模式。那么什么是原型模式呢?(1)原型模式定义 (2)应用原型模式来解决的思路仔细分析上面的问题,在saveOrder方法里面,已经有了订单接口类型的对象实例,是从外部传入的,但是这里只是知道这个实例对象的种类是订单的接口类型,并不知道其具体的实现类型,也就是不知道它到底是个人订单还是企业订单,但是现在需要在这个方法里面创转载 2012-12-10 10:22:51 · 279 阅读 · 0 评论 -
23种设计模式之命令模式2
3.4 宏命令 什么是宏命令呢?简单点说就是包含多个命令的命令,是一个命令的组合。举个例子来说吧,设想一下你去饭店吃饭的过程: (1)你走进一家饭店,找到座位坐下 (2)服务员走过来,递给你菜谱 (3)你开始点菜,服务员开始记录菜单,菜单是三联的,点菜完毕,服务员就会把菜单分成三份,一份给后厨,一份给收银台,一份保留备查转载 2012-12-10 11:27:32 · 350 阅读 · 0 评论 -
算法之直接插入排序降序,升序
//升序public static void Insertion_Sort(int[] elements){ for(int i = 1;i int j = -1; while(j elements[++j]);//找到element[i]应该摆放的位置,此处可以利用查找算法进行优化 if(转载 2012-12-11 11:21:24 · 974 阅读 · 0 评论 -
算法之分冶算法-合并算法
private static int[] mergeSort(int[] array) { //如果数组的长度大于1,继续分解数组 if (array.length > 1) { int leftLength = array.length / 2; int rightLength = array.lengt转载 2012-12-11 11:41:17 · 380 阅读 · 0 评论 -
算法之分冶法合并算法
//递归分成小部分 public void merge_sort(int[] arrays,int start,int end){ if(start<end){ int m=(start+end)/2; merge_sort(arrays,start,m); merge_sort(arrays,m+1,转载 2012-12-11 11:43:53 · 775 阅读 · 0 评论 -
23种设计模式之职责链模式
用来解决上述问题的一个合理的解决方案,就是使用职责链模式。那么什么是职责链模式呢?(1)职责链模式定义 (2)应用职责链模式来解决的思路仔细分析上面的场景,当客户端提出一个聚餐费用的申请,后续处理这个申请的对象,项目经理、部门经理和总经理,自然的形成了一个链,从项目经理à部门经理à总经理,客户端的申请请求就在这个链中传递,直到有领导处理为止。看起来,上面的功能要求很转载 2012-12-11 08:40:00 · 371 阅读 · 0 评论 -
23种设计模式之访问者模式
25.2.1 访问者模式来解决用来解决上述问题的一个合理的解决方案,就是使用访问者模式。那么什么是访问者模式呢?(1)访问者模式定义(2)应用访问者模式来解决的思路仔细分析上面的示例,对于客户这个对象结构,不想改变类,又要添加新的功能,很明显就需要一种动态的方式,在运行期间把功能动态地添加到对象结构中去。有些朋友可能会想起装饰模式,装饰模式可以转载 2012-12-11 09:51:07 · 422 阅读 · 0 评论 -
算法之希尔排序
public static void main(String[] args){ Random r = new Random(); Comparable[] data = new Comparable[20]; for(int i = 0; i data[i] = r.nextIn转载 2012-12-11 14:47:38 · 325 阅读 · 0 评论 -
算法之冒泡排序
public static void main(String[] args){ //测试数据 int arr[] = {5, 4, 1, 3, 6}; //冒泡排序 bubbleSort(arr, 5); //打印排序结果 int i; for(i = 0; i System.out.print转载 2012-12-11 15:10:19 · 355 阅读 · 0 评论 -
算法之快速排序
import java.util.Comparator;import java.util.Random; public class Quicksort { public static final Random RND = new Random(); private static void swap(Object[] array, int i, int j) {转载 2012-12-11 15:23:18 · 352 阅读 · 0 评论 -
23种设计模式之命令模式4
3.7 命令模式的优缺点更松散的耦合 命令模式使得发起命令的对象——客户端,和具体实现命令的对象——接收者对象完全解耦,也就是说发起命令的对象,完全不知道具体实现对象是谁,也不知道如何实现。更动态的控制 命令模式把请求封装起来,可以动态对它进行参数化、队列化和日志化等操作,从而使得系统更灵活。能很自然的复合命令 命令模式中的命令对象,能够很容易的组合成为复合转载 2012-12-10 14:13:00 · 489 阅读 · 0 评论 -
23种设计模式之命令模式3
3.3 可撤销的操作 可撤销操作的意思就是:放弃该操作,回到未执行该操作前的状态。这个功能是一个非常重要的功能,几乎所有GUI应用里面都有撤消操作的功能。GUI的菜单是命令模式最典型的应用之一,所以你总是能在菜单上找到撤销这样的菜单项。 既然这么常用,那该如何实现呢? 有两种基本的思路来实现可撤销的操作,一种是补偿式,又称反操作式:比如被转载 2012-12-10 14:03:33 · 340 阅读 · 0 评论 -
23种设计模式之命令模式1
3.1 认识命令模式(1)命令模式的关键 命令模式的关键之处就是把请求封装成为对象,也就是命令对象,并定义了统一的执行操作的接口,这个命令对象可以被存储、转发、记录、处理、撤销等,整个命令模式都是围绕这个对象在进行。 (2)命令模式的组装和调用 在命令模式中经常会有一个命令的组装者,用它来维护命令的“虚”实现和真实实现之间的关系。如果是超级智能的转载 2012-12-10 11:25:46 · 604 阅读 · 0 评论 -
23种设计模式之抽象工厂模式
用来解决上述问题的一个合理的解决方案就是抽象工厂模式。那么什么是抽象工厂模式呢?(1)抽象工厂模式定义提供一个创建一系列相关或相互依赖的接口,而无需指定它们的具体类 (2)应用抽象工厂模式来解决的思路 仔细分析上面的问题,其实有两个问题点,一个是只知道所需要的一系列对象的接口,而不知具体实现,或者是不知道具体使用哪一个实现;另外一个是这一系列对象是相关或者相互依赖的。也转载 2012-12-07 16:46:35 · 379 阅读 · 0 评论 -
23种模式之简单工厂模式
简单工厂 简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧。 为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习。1 场景问题 大家都知道,在Java应用开发中,要“面向接口编程”。 那么什么是接口?接口有什么作用?接口如何使用转载 2012-12-07 14:10:43 · 455 阅读 · 0 评论 -
23种设计模式之命令模式
命令模式也是开发中常见的一个模式,也不是太难,比较简单,下面来详细的写一下命令模式。 命令模式(Command)1 场景问题1.1 如何开机 估计有些朋友看到这个标题会非常奇怪,电脑装配好了,如何开机?不就是按下启动按钮就可以了吗?难道还有什么玄机不成。 对于使用电脑的客户——就是我们来说,开机确实很简单,按下转载 2012-12-10 11:23:36 · 327 阅读 · 0 评论 -
23种设计模式之命令模式3
3.5 队列请求 所谓队列请求,就是对命令对象进行排队,组成工作队列,然后依次取出命令对象来执行。多用多线程或者线程池来进行命令队列的处理,当然也可以不用多线程,就是一个线程,一个命令一个命令的循环处理,就是慢点。 继续宏命令的例子,其实在后厨,会收到很多很多的菜单,一般是按照菜单传递到后厨的先后顺序来进行处理,对每张菜单,假定也是按照菜品的先后顺序进行制转载 2012-12-10 14:06:36 · 377 阅读 · 0 评论 -
23种设计模式之迭代器模式1
14.2 解决方案14.2.1 迭代器模式来解决用来解决上述问题的一个合理的解决方案就是迭代器模式。那么什么是迭代器模式呢?(1)迭代器模式定义 所谓聚合是:指一组对象的组合结构,比如:Java中的集合、数组等。(2)应用迭代器模式来解决的思路 仔细分析上面的问题,要以一个统一的方式来访问内部实现不同的聚合对象,那么首先就需要转载 2012-12-10 14:19:17 · 387 阅读 · 0 评论 -
23种设计模式之适配器模式
package dp.adapter; /** * 我们吃饭就是等上齐了一起吃,非吃即喝,反正一直嘴不停的吃 * 被适配的类 */ public class MyEat { public void eat(){ System.out.println("吃饭"); } public void d转载 2012-12-10 09:23:04 · 274 阅读 · 0 评论 -
23种设计模式之单例模式
/** * 读取应用配置文件,单例实现 */ public class AppConfig { /** * 定义一个变量来存储创建好的类实例,直接在这里创建类实例,只会创建一次 */ private static AppConfig instance = new AppConfig(); /**转载 2012-12-10 09:29:44 · 346 阅读 · 0 评论 -
23种模式设计之生成器模式
用来解决上述问题的一个合理的解决方案就是生成器模式。那么什么是生成器模式呢?(1)生成器模式定义 (2)应用生成器模式来解决的思路 仔细分析上面的实现,构建每种格式的数据文件的处理过程,这不就是构建过程吗?而每种格式具体的步骤实现,不就相当于是不同的表示吗?因为不同的步骤实现,决定了最终的表现也就不同。也就是说,上面的问题恰好就是生成器模式要解决的问题。转载 2012-12-10 09:51:52 · 452 阅读 · 0 评论 -
23种设计模式之生成器模式2
//产品类public class Product {String window;String floor;String door;public String getWindow() { return window;}public void setWindow(String window) { this.window = window;}转载 2012-12-10 10:08:21 · 332 阅读 · 0 评论 -
23种设计模式之原型模式
9.1.1 订单处理系统考虑这样一个实际应用:订单处理系统。现在有一个订单处理的系统,里面有个保存订单的业务功能,在这个业务功能里面,客户有这么一个需求:每当订单的预定产品数量超过1000的时候,就需要把订单拆成两份订单来保存,如果拆成两份订单后,还是超过1000,那就继续拆分,直到每份订单的预定产品数量不超过1000。至于为什么要拆分,原因是好进行订单的后续处理,后续是由人工来转载 2012-12-10 10:19:28 · 340 阅读 · 0 评论 -
23种设计模式之中介者模式1
用来解决上述问题的一个合理的解决方案就是中介者模式。那么什么是中介者模式呢?(1)中介者模式定义 (2)应用中介者模式来解决的思路仔细分析上面的问题,根本原因就在于多个对象需要相互交互,从而导致对象之间紧密耦合,这就不利于对象的修改和维护。中介者模式的解决思路很简单,跟电脑的例子一样,中介者模式通过引入一个中介对象,让其它的对象都只和中介对象交互,而中介对象转载 2012-12-10 10:32:22 · 404 阅读 · 0 评论 -
23种设计模式之代理模式
用来解决上述问题的一个合理的解决方案就是代理模式。那么什么是代理模式呢?(1)代理模式定义 (2)应用代理模式来解决的思路仔细分析上面的问题,一次性访问多条数据,这个可能性是很难避免的,是客户的需要。也就是说,要想节省内存,就不能从减少数据条数入手了,那就只能从减少每条数据的数据量上来考虑。一个基本的思路如下:由于客户访问这多条用户数据的时候,基本上只需要看转载 2012-12-10 10:58:48 · 364 阅读 · 0 评论 -
23种设计模式之观察者模式
用来解决上述问题的一个合理的解决方案就是观察者模式。那么什么是观察者模式呢?(1)观察者模式定义 (2)应用观察者模式来解决的思路在前面描述的订阅报纸的例子里面,对于报社来说,在一开始,它并不清楚究竟有多少个订阅者会来订阅报纸,因此,报社需要维护一个订阅者的列表,这样当报社出版报纸的时候,才能够把报纸发放到所有的订阅者手中。对于订阅者来说,订阅者也就是看报的读者,多转载 2012-12-10 11:20:15 · 317 阅读 · 0 评论