`
lh_kevin
  • 浏览: 44111 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表

迪米特法则

设计模式六大原则(5):迪米特法则 (转载)   定义:一个对象应该对其他对象保持最少的了解。如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法 ...
设计模式六大原则(4):接口隔离原则(转载)   定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。 解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。 举例来说明接口隔离原则:        这个图的意思是:类A依赖接口I中的方法1、方法2、方法3,类B是对类A依赖的实现。类C依赖接口I中的方法1、方法4、方法5,类D是对类C依赖的实 ...
  设计模式六大原则(3):依赖倒置原则 (转载)   定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必 ...
  设计模式六大原则(2):里氏替换原则 (转载)   我们都知道面向对象有三大特性:封装、继承、多态。所以我们在实际开发过程中,子类在继承父类后,根据多态的特性,可能是图一时方便,经常任意重写父类的方法,那么这种方式会大大增加代码出问题的几率。比如下面场景:类C实现了某项功能F1。现在需要对功能F1作修改扩展,将功能F1扩展为F,其中F由原有的功能F1和新功能F2组成。新功能F由类C的子类C1来完成,则子类C1在完成功能F的同时,有可能会导致类C的原功能F1发生故障。这时候里氏替换原则就闪亮登场了。 什么是里氏替换原则  前面说过的单一职责原则,从字面意思就很好理解,但是里氏替换原 ...
  java动态代理(JDK和cglib)   JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托 类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代 理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反 ...
依赖注入(非原创)   Spring 能有效地组织J2EE应用各层的对象。不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的 管理下有机地协调、运行。Spring将各层的对象以松耦合的方式组织在一 ...
  策略模式和状态模式虽然类图上很相似,但是运用的时候个人觉得有很大的区别. 状态模式:当一个对象的内在状态变化时允许改变起行为,这个对象看起来像是改变了其类。 状态模式主要突出了两个字:”改变”, 对!对象的状态决定了状态的行为,事物的本质决定了事物的行为,我们精神亢奋的时候,我们拼命的工作,我们拼命的工作就导致了我们身心疲惫,物品们身心疲惫就导致我们的行为是需要休息;从这里我们可以看出,事物的内在状态决定了事物所做出的行为,而事物的行为势必又会改变我们事物的状态,两者在不断的相互影响,然后实现状态的迁移和跃迁;   从这两点,我们可以看出策略模式和状态模式的应用场景有很大的不同 ...
结合简单示例和UML图,讲解工厂模式简单原理。   一、引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰)、Bmw(宝马)、Audi(奥迪)),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz车后跟司机 ...
Write operations are not allowed in read-only mode 只读模式下(FlushMode.NEVER/MANUAL)写操作不允   org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.CO ...
使用JSON报的一个错误:java.lang.ClassNotFoundException 今天自己写了一个struts2/json/easyui的例子, 可是一调用就出了问题,报下面这个异常:java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException   上网上搜了一下才知道原来在使用JSON的使用的时候,不光要导入 ...
java学习路线,供大家参考 ------------- 第一阶段:java基础,java ee基础、或者swing基础 第二阶段:ssh,ibatis、quartz等框架应用,以及webservice、网络编程,rcp 第三阶段:设计模式,能够理解主流框架源码以及设计思路、web安全领域(jaas、sso、ssl、rbac、oauth、acegi等)、 缓存领域(oscache、jbosscache、ehcache以及缓存采用什么技术同步:jgroup、jms) 第四阶段:集群架构、分布式、osgi、eai等架构领域 第五阶段:soa、虚拟化、云 ------------- ...
function addLoadEvent(func){    var oldonload = window.onload;    if (typeof window.onload != 'function'){       window.onload = func;    } else {       window.onload = function(){           oldonload();           func();       }    } } function func1(){alert("aaa");} function f ...
一、具体的步骤如下: 1 编写业务类 2 配置spring的applicationContext.xml文件     2.1配置任务 MethodInvokingJobDetailFactoryBean     2.2配置触发器 CronTriggerBean     2.3配置调度器  SchedulerFactoryBean 3 所需要的jar包:          spring.jar,quartz.jar, commons-logging-1.0.4.jar, commons-dbcp-1.2.2.jar, commons-pool-1.3.ja ...
Hibernate.initialize(Obj)用法   在使用hibernate进行持久化时,有时需要动态的改变对象的加载,比如在编辑页面里面lazy=true,而在浏览页面lazy=false,这样可以在需要lazy的地方才进行控制。而配置文件中Lazy属性是全局控制的,如何处理呢?   当元素或者元素的lazy属性为true时,load() or get() or find()加载这些对象时,Hibernate不会马上产生任何select语句,只是产生一个Obj代理类实例,只有在session没有关闭的情况下运行Obj.getXxx()时才会执行select语句从数据库加载对象,如果没 ...
使用JUnit4来对Spring/Hibernate应用进行测试 背景: 如果在Hibernate层采用lazy=true的话,有的时候会抛出LazyInitializationException,这时一种解决办法是用OpenSessionInViewFilter,但是如果通过main方法来运行一些测试程序,那么上述方法就没有用武之地了。这里提供了一种方法,来达到实现和OpenSessionInViewFilter相同作用的目的。这里的应用场景是采用JUnit4来编写测试用例。 JUnit4的好处是:采用annotation来代替反射机制,不必写死方法名. 首先添加一个abstract cl ...
Global site tag (gtag.js) - Google Analytics