2013年7月28日
摘要: 装饰模式(Decorator),其含义是动态地给一个对象添加一些额外的职责,就增加功能来说,Decorator模式相比生成子类更为灵活。有时候我们希望给某个对象而不是整个类添加一些功能,通常是使用继承机制,但是用户不能控制添加功能的时机,装饰模式是一种较为灵活的方式添加功能。 其适用性: 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责, 处理那些可以撤销的职责, 当不能采用生成子类的方法进行扩充时,一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。 装饰模式可以在无需创建子. 阅读全文
posted @ 2013-07-28 16:55 糊涂先生 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 组合模式(Composite),其含义是将对象组合成树形结构以表示”部分-整体“的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性,其用于解决对象访问接口不一致的问题。 在组合模式中有单个对象和复合对象之分,或者对象的结构是动态的并且复杂程度不一样,但客户需要一致地处理它们,这样就不难理解了。对于复合对象也要像处单个元素一样来处理,降低与复杂对象的耦合性。 其适用性: 你想表示对象的部分-整体层次结构, 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象 通常情况我们需要使Leaf和Composite类可以继承这个引用以及管理这个引用的那些操. 阅读全文
posted @ 2013-07-28 15:48 糊涂先生 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 桥接模式(Bridge),其含义是将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里的实现指的是功能的实现,并非接口实现。当一个抽象可能有多个实现时,通常用继承来协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。该模式在抽象类与它的实现之间起到了桥梁作用,使它们可以独立地变化。 其适用性: 你不希望在抽象和它的实现部分之间有一个固定的绑定关系, 类的抽象以及它的实现都应该通过生成子类的方法加以扩充。这是Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充 对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译 你想对客户. 阅读全文
posted @ 2013-07-28 14:48 糊涂先生 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 适配器模式(Adapter),其含义是将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作了。因此适配器的主要作用就是完成旧接口到新接口的转换;将“既有系统“进行封装,逻辑上客户程序应该不知道”既有系统“的存在,将变化隔离在适配器部分;如果客户程序需要迁移,仅需要在适配器部分进行修改。 其适用性: 你想使用一个已经存在的类,而它的接口不符合你的要求, 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可以不一定兼容的类)协同工作, 你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的. 阅读全文
posted @ 2013-07-28 12:29 糊涂先生 阅读(386) 评论(0) 推荐(0) 编辑
  2013年7月22日
摘要: 单例模式(Singleton),也成单件模式,其含义是保证一个类仅有一个实例,并提供一个访问它的全局访问点。因此实现单例模式有三个要求,第一是程序当中只有一个实例,不会再创建第二个,第二这个唯一实例必须由自己创建,第三这个实例提供全局访问点。 单例模式在开发中使用较多,而且很多的框架中也常使用该模式,如我们常见的windows任务管理器等,其适用性: 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 单例模式常见有两种使用方式,一个是懒汉式,另一个是饿汉式,其实就... 阅读全文
posted @ 2013-07-22 23:31 糊涂先生 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 原型模式(Prototype),其意图是用原型实例指定创建对象的种类,并且通过拷贝这些这些原型创建新的对象。原型模式意在通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝原型自己来实施创建过程。其允许一个对象再创建另外一个可定制的对象,无需知道任何创建的细节。 其适用性: 当一个系统应该独立于它的产品创建、构成和表示时,要使用Prototype模式;以及 当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者 为了避免创建一个与产品类层次平行的工厂类层次时;或者 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适. 阅读全文
posted @ 2013-07-22 22:35 糊涂先生 阅读(247) 评论(0) 推荐(0) 编辑
  2013年7月17日
摘要: 建造者模式(Builder),其意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂对象,它允许用户只通过制定复杂对象的类型和内容就可以构建它们,用户并不知道内部的具体构建细节。好比你去餐厅用餐,你需要告诉接待员你需要的菜品,中间过程接待员如何把菜单拿给传菜人员,又如何从到厨师那里,后来菜又如何传到你这里,你只管等待这个过程然后就有菜吃了。 其适用性: 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同的表示时。 如图建造者模式允许用户只通过指定复杂对象的类... 阅读全文
posted @ 2013-07-17 22:59 糊涂先生 阅读(277) 评论(0) 推荐(0) 编辑
  2013年7月15日
摘要: 抽象工厂模式(Abstract Factory),其意图主要是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它具体的类。 抽象工厂模式是对工厂方法模式的拓展和延伸,工厂方法是针对任意数量的产品等级,多应用于虚拟构造子类,抽象工厂则可以处理多个产品族结构。也就是说工厂方法模式只能创造出来一类茶品,而抽象工厂模式可以创造多种产品。其适用性在于: 一个系统要独立于它的产品的创建、组合和表示时。 一个系统要由多个产品系列中的一个来配置时。 当你要强调一系列相关的产品对象的设计以便进行联合使用时。 当你提供一个产品类库,而只想显示它们的接口而不是实现时。 如下图: 抽象工厂模式分离... 阅读全文
posted @ 2013-07-15 23:47 糊涂先生 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 工厂方法模式(Factory Method),其含义是定义一个创建对象的接口,让子类来决定实例化哪一个类,其又叫多态性工厂模式。这样各种产品使用不同的工厂来生产,各种工厂中的创建方法可以互相独立地改变,并将这些工厂类抽象出一个共同的父类。其适用性如下: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 其适用性: 当一个类不知道它所必须创建的对象的类的时候。 当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 如下图: . 阅读全文
posted @ 2013-07-15 23:47 糊涂先生 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 简单工厂模式是最简单的工厂模式,又叫静态工厂方法模式。它实现了同一接口的一些类进行实例的创建,一个工厂通过条件语句创建多个产品,产品的创建逻辑集中在一个工厂类中,客户听过传递不同的参数给工厂,实现创建不同产品的目的。如下: Phone是一个接口,其有一个行为是ring,NokiaPhone和EricssonPhone分别实现了这个接口,在客户端使用时通过传入的是什么手机类型,而得到不同的手机。实现如下: Phone.java: packageorg.designpattern.creational.simplefactory; publ... 阅读全文
posted @ 2013-07-15 23:47 糊涂先生 阅读(324) 评论(0) 推荐(0) 编辑
  2013年7月14日
摘要: 在看每一本讲述设计模式的书,都会提前讲到面向对象的设计原则,记得上这门课的时候老师也是提前讲了这个原则,当然当初没有好好听了,后来发现23中设计模式确实是遵循了这个原则,这样对软件的维护带来很多方便。好了不废话了 良好的面向对象设计需要遵循一些基本原则,如单一职责原则(SRP)、开-闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)、接口隔离原则(ISP)等。 一、单一职责原则(Single Responsibility Principle) 其含义是 对于一个类而言,应该仅有一个引起它变换的原因。我们在构造对象时,应将对象的不同职责分离制多个类中,从而确保引起该来类变化的原因. 阅读全文
posted @ 2013-07-14 15:34 糊涂先生 阅读(257) 评论(0) 推荐(0) 编辑
  2013年7月13日
摘要: Spring框架是一个非常优秀的轻量级Java EE容器,Spring框架是整个轻量级Java EE框架的核心。大部分的Java EE应用,都会考虑使用Spring容器管理应用中的组件,从而保证各组件之间的低耦合。Struts2框架只是一个MVC框架,Web层的解决方案。其通过一种”可插拔式“的插件,实现了与Spring框架的整合。 Struts2提供了两种基本的整合策略,其中一种策略是将Action实例交给Spring容器来负责生成、管理,通过这种方式,可以充分利用Spring容器的IoC特性,提供最好的解耦;另外一种策略是利用Spring插件的自动装配方式,当Spring插件创建Acti. 阅读全文
posted @ 2013-07-13 21:35 糊涂先生 阅读(1103) 评论(0) 推荐(0) 编辑
摘要: 在Web项目中一般会把各个web框架结合在一起使用,比如spring+hibernate,spring+ibatis等,如此以来将其他的框架整合到spring中来,便有些少许的不便,当然spring已经把这种整合变得很简单了。本人结合在项目中使用过的spring和ibatis,以及和mybatis的整合,进而小测了一下和hibernate的整合,望批评指正。 一、spring、hibernate整合 Spring中不但可以选择SpringJDBC作为持久化技术,还可以选择Hibernate、iBatis、JPA、JDO等多种类型的持久化技术。Spring提供了方便的模板类对原ORM进行简化封. 阅读全文
posted @ 2013-07-13 17:58 糊涂先生 阅读(9770) 评论(0) 推荐(1) 编辑
  2013年7月9日
摘要: 在项目中执行一个linux的shell脚本,于是需要在java环境下执行外部命令如系统命令、linux命令的需求,本人小小研究了一下,又上网查了一些资料先整理如下。 java执行外部命令主要依赖两个类Process和Runtime。 一、Process类 ProcessBuilder.start()创建一个本机进程,并返回一个Process子类的一个实例,该实例可以获取进程的相关信息,也可以控制进程。这个进程没有自己的终端,它的操作结果io都重定向到了它的父进程,父进程通过getInputStream(),getOutputStream(),getErrorStream()为子进程提供输入和. 阅读全文
posted @ 2013-07-09 15:40 糊涂先生 阅读(6533) 评论(0) 推荐(0) 编辑
  2013年6月30日
摘要: 1.spring security介绍 Spring Security原来叫做Acegi Security,可用于加强任何Java应用的安全,但是最常用于基于Web的应用。下面首先理解几个安全术语: 验证:是验证一个角色与其声称的身份相符的过程。这个角色可以是一个用户、一个设备或者一个系统,但是最典型的是一个用户。角色必须提供身份证据进行验证。这个证据称作凭据,当目标角色是用户时通常是一个密码。 授权:是向已验证的用户授予权限,使其能够访问目标应用的特定资源的过程。收全过程必须在验证过程之后进行。一般来说,权限按照角色授予。 访问控制:意指控制对应应用资源的访问。访问控制必须作出用户是否允许访 阅读全文
posted @ 2013-06-30 23:17 糊涂先生 阅读(1070) 评论(1) 推荐(0) 编辑