- 博客(18)
- 收藏
- 关注
原创 研磨struts2 第二章 Struts 2的HelloWorld
2.1 概述通过第1章的讲述,明白了Struts 2是什么、有什么以及能干什么,接下来就该来讨论怎么做的问题了,也就是讨论如何使用Struts 2来开发基于MVC的web应用。按照惯例,学习一个新的东西,都是从HelloWorld起步的,这里也不例外,本章就一起来看一个Struts 2的HelloWorld实现。本章会从搭建Struts 2的开发环境开始,用Struts 2来开发一个
2011-12-19 11:26:16 905
原创 研磨Struts2 第一章 Struts2概述-2
1.2 Struts2基础1.2.1 Struts1时代 随着时间的推移,Servlet+JSP+JavaBean模型暴露出了它的缺点:Ø 流程凌乱:Servlet在完成对用户请求的处理后,下一个页面是谁?如何跳转过去?这些都是在Servlet里面直接写代码来完成的。导致Servlet既要处理请求,还要负责页面的流程,使得Servlet功能
2011-11-12 13:20:57 972
原创 研磨Struts2 第一章 Struts2概述-1
第一章 Struts2概述 1.1 MVC模式1.1.1 MVC模式简介MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好的开发和维护效率。 在MVC模式中,应用程序被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑
2011-11-11 22:04:29 752
原创 研磨设计模式之单例模式-4
3.8 在Java中一种更好的单例实现方式<br /> 根据上面的分析,常见的两种单例实现方式都存在小小的缺陷,那么有没有一种方案,既能够实现延迟加载,又能够实现线程安全呢?<br /> 还真有高人想到这样的解决方案了,这个解决方案被称为Lazy initialization holder class模式,这个模式综合使用了Java的类级内部类和多线程缺省同步锁的知识,很巧妙的同时实现了延迟加载和线程安全。<br />1:先来看点相应的基础知识<br /> 先简单
2010-11-02 12:03:00 503 2
原创 研磨设计模式之单例模式-3
3.3 延迟加载的思想<br /> 单例模式的懒汉式实现方式体现了延迟加载的思想,什么是延迟加载呢?<br /> 通俗点说,就是一开始不要加载资源或者数据,一直等,等到马上就要使用这个资源或者数据了,躲不过去了才加载,所以也称Lazy Load,不是懒惰啊,是“延迟加载”,这在实际开发中是一种很常见的思想,尽可能的节约资源。<br /> 体现在什么地方呢?看如下代码:<br /><br /><br /> 3.4 缓存的思想<br /><br />
2010-11-02 12:02:00 487 4
原创 研磨设计模式之单例模式-2
3 模式讲解3.1 认识单例模式(1)单例模式的功能 单例模式的功能是用来保证这个类在运行期间只会被创建一个类实例,另外单例模式还提供了一个全局唯一访问这个类实例的访问点,就是那个getInstance的方法。不管采用懒汉式还是饿汉式的实现方式,这个全局访问点是一样的。 对于单例模式而言,不管采用何种实现方式,它都是只关心类实例的创建问题,并不关心具体的业务功能。(2)单例模式的范围 也就是在多大范围内是单例呢? 观察上面的实现可以知道,目前Jav
2010-11-01 17:54:00 407 1
原创 研磨设计模式之单例模式-1
看到很多朋友在写单例,也来凑个热闹,虽然很简单,但是也有很多知识点在单例里面,看看是否能写出点不一样来。 单例模式(Singleton) 1 场景问题1.1 读取配置文件的内容 考虑这样一个应用,读取配置文件的内容。 很多应用项目,都有与应用相关的配置文件,这些配置文件多是由项目开发人员自定义的,在里面定义一些应用需要的参数数据。当然在实际的项目中,这种配置文件多采用xml格式的。也有采用properties格式的,毕竟使用Java来读取properties格式的配置文件比
2010-11-01 17:52:00 555
原创 研磨设计模式之策略模式-6
3.4 策略模式结合模板方法模式 在实际应用策略模式的过程中,经常会出现这样一种情况,就是发现这一系列算法的实现上存在公共功能,甚至这一系列算法的实现步骤都是一样的,只是在某些局部步骤上有所不同,这个时候,就需要对策略模式进行些许的变化使用了。 对于一系列算法的实现上存在公共功能的情况,策略模式可以有如下三种实现方式:一个是在上下文当中实现公共功能,让所有具体的策略算法回调这些方法。另外一种情况就是把策略的接口改成抽象类,然后在里面实现具体算法的公共功能。还有一种情况是给所有的
2010-10-29 22:13:00 623
原创 研磨设计模式之策略模式-5
接策略模式-4,其实是讲的一个主题,写在一个里面超长了,只好分成了两个,请见谅!3:扩展示例,实现方式一 经过上面的测试可以看出,通过使用策略模式,已经实现好了两种支付方式了。如果现在要增加一种支付方式,要求能支付到银行卡,该怎么扩展最简单呢? 应该新增加一种支付到银行卡的策略实现,然后通过继承来扩展支付上下文,在里面添加新的支付方式需要的新的数据,比如银行卡账户,然后在客户端使用新的上下文和新的策略实现就可以了,这样已有的实现都不需要改变,完全遵循开-闭原则。 先
2010-10-29 22:11:00 411 2
原创 研磨设计模式之策略模式-4
3.3 Context和Strategy的关系 在策略模式中,通常是上下文使用具体的策略实现对象,反过来,策略实现对象也可以从上下文获取所需要的数据,因此可以将上下文当参数传递给策略实现对象,这种情况下上下文和策略实现对象是紧密耦合的。 在这种情况下,上下文封装着具体策略对象进行算法运算所需要的数据,具体策略对象通过回调上下文的方法来获取这些数据。 甚至在某些情况下,策略实现对象还可以回调上下文的方法来实现一定的功能,这种使用场景下,上下文变相充当了多个策略算法实
2010-10-29 22:10:00 430
原创 研磨设计模式之策略模式-3
3 模式讲解3.1 认识策略模式(1)策略模式的功能 策略模式的功能是把具体的算法实现,从具体的业务处理里面独立出来,把它们实现成为单独的算法类,从而形成一系列的算法,并让这些算法可以相互替换。 策略模式的重心不是如何来实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活、具有更好的维护性和扩展性。(2)策略模式和if-else语句 看了前面的示例,很多朋友会发现,每个策略算法具体实现的功能,就是原来在if-else结构中的具体实现。没错,其实多个if-e
2010-10-29 22:08:00 453
原创 研磨设计模式之策略模式-2
2 解决方案2.1 策略模式来解决 用来解决上述问题的一个合理的解决方案就是策略模式。那么什么是策略模式呢?(1)策略模式定义 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。(2)应用策略模式来解决的思路 仔细分析上面的问题,先来把它抽象一下,各种计算报价的计算方式就好比是具体的算法,而使用这些计算方式来计算报价的程序,就相当于是使用算法的客户。 再分析上面的实现方式,为什么会造成那些问题
2010-10-29 22:03:00 431
原创 研磨设计模式之策略模式-1
策略模式(Strategy)1 场景问题1.1 报价管理 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要报不同的价格,比如:对普通客户或者是新客户报的是全价对老客户报的价格,根据客户年限,给予一定的折扣对大客户报的价格,根据大客户的累计消费金额,给予一定的折扣还要考虑客户购买的数量和金额,比如:虽然是新用户,但是一次购买的数量非常大,或者是总金额非常高,也会有一定的折扣还有,报价人员的职务高低,也决定了他是否有权限对价格进行一定的浮动折扣
2010-10-29 21:57:00 511
原创 研磨设计模式之工厂方法模式-5
3.3 平行的类层次结构(1)什么是平行的类层次结构呢? 简单点说,假如有两个类层次结构,其中一个类层次中的每个类在另一个类层次中都有一个对应的类的结构,就被称为平行的类层次结构。 举个例子来说,硬盘对象有很多种,如分成台式机硬盘和笔记本硬盘,在台式机硬盘的具体实现上面,又有希捷、西数等不同品牌的实现,同样在笔记本硬盘上,也有希捷、日立、IBM等不同品牌的实现;硬盘对象具有自己的行为,如硬盘能存储数据,也能从硬盘上获取数据,不同的硬盘对象对应的行为对象是不一样的,因为不同的硬盘
2010-10-26 09:52:00 4597 7
原创 研磨设计模式之工厂方法模式-4
3.2 工厂方法模式与IoC/DI IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入1:如何理解IoC/DI 要想理解上面两个概念,就必须搞清楚如下的问题:参与者都有谁?依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么?控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)?依赖注入和控制反转是同一概念吗? 下面就来简要的回答一下上述问题,把这些问题搞明白了,IoC/DI也
2010-10-26 09:49:00 724 8
原创 研磨设计模式之工厂方法模式-3
3 模式讲解3.1 认识工厂方法模式(1)模式的功能 工厂方法的主要功能是让父类在不知道具体实现的情况下,完成自身的功能调用,而具体的实现延迟到子类来实现。 这样在设计的时候,不用去考虑具体的实现,需要某个对象,把它通过工厂方法返回就好了,在使用这些对象实现功能的时候还是通过接口来操作,这非常类似于IoC/DI的思想,这个在后面给大家稍详细点介绍一下。(2)实现成抽象类 工厂方法的实现中,通常父类会是一个抽象类,里面包含创建所需对象的抽象方法,这些抽象方法就是工
2010-10-26 09:44:00 669
原创 研磨设计模式之工厂方法模式-2
2 解决方案2.1 工厂方法模式来解决 用来解决上述问题的一个合理的解决方案就是工厂方法模式。那么什么是工厂方法模式呢?(1)工厂方法模式定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。(2)应用工厂方法模式来解决的思路 仔细分析上面的问题,事实上在实现导出数据的业务功能对象里面,根本就不知道究竟要使用哪一种导出文件的格式,因此这个对象本就不应该和具体的导出文件的对象耦合在一起,它只需要面
2010-10-26 09:39:00 691 2
原创 工厂方法模式-连续剧第一集
做Java一晃就十年了,最近手痒痒,也决定跟随一下潮流,整个博客,写点东西,就算对自己的知识进行一个梳理和总结,也跟朋友们交流交流,希望能坚持下去。 先写写设计模式方面的内容吧,就是GoF的23个模式,先从大家最熟悉的工厂方法模式开始,这个最简单,明白的人多,看看是否能写出点跟别人不一样的东西,欢迎大家来热烈讨论,提出建议或意见,并进行批评指正,一概虚心接受,在此先谢过了! 另外,大家也可以说说最想看到哪个模式,那我就先写它,呵呵,大家感兴趣,我才会有动力写下去!好了,言归正传,No
2010-08-05 07:50:00 1417 6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人