java与模式

什么是设计模式?
软件开发中解决特殊问题的特殊方法, 使我们的代码重用性更高.可维护性更强.


单例模式:
     在项目中的用到的: 得到connection连接的时候.但是这个并不是完全的单例模式.应为connection的构造器我们很难控制住.
     首先我们的提供一个私有的构造方法.为防止外面的类去直接new他的对象.     
     我们的对外暴露一个共外部访问的点,这个点就是一个方法.并且这个方法得是public static 线程同步的,为什么要线程同步呢?
     如果多条线程同时访问这个对象的时候,可能会生成多个对象.我们还得在这个方法里判断这个对象是否已经在java虚拟器存在.
     如果存在我们就直接返回这个对象,不存在就new出这个对象.
     
     
工厂模式:
    在项目中的使用: 隐藏new 关键字,因为我们直接new出对象那么类与类之间的耦合度非常的大.所以我们就使用到了工厂模式.
    在mvc思想里,我们的service层得用到dao层的方法就通过工厂模式来实现,但是工厂模式并没有完全的解决了类与类之间的耦合度
    的问题,如果要完全的解决就的用到spring中的依懒注入.
   
   
策略模式:
    解决的问题: 同样的事情用不同的方法去实现,这个实现并且可以项目转换.
    在项目中的使用:  比如以前我们在项目中用到的技术是Ibatis, 现在客户突然觉得这个Ibatis跟不上时代的潮流.要用hibernate.
    我们就得改,因为顾客是上帝吗>没办法.如果你在该的过程中没有使用到策略模式,那么我相信,你改动的地方是非常的多的.
    如果用到了策略模式那就会有意想不到的效果,只需改一窜字符窜就Ok了,把ibatis实现改成hibernate实现.
   
模板模式:
   解决的问题: 我们的父类定义流程,之类实现.
   在项目中的使用: 我们程序员在做开发的时候跟数据库打交道的情况是非常的多的,增 , 删 , 查 , 改.现在拿删除做例子,
   我们在父定义流程的话写的代码会少的很多.我们子类只需传入一个表名就可以完事.但是如果没用到的话那么就的在每个
   子类的方法里写删除sql 的语句.这样就出现了大量的重复代码,在我们IT领域里,有句话说: 重复就是万恶之源.
  
  
观察者模式:
    简单的例子: 用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,
    就显示在界面上.
   
    面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,
    并且将他做好。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性.
   
    注意:  实现观察者模式的时候要注意,观察者和被观察对象之间的互动关系不能体现成类之间的直接调用,
    否则就将使观察者和被观察对象之间紧密的耦合起来,从根本上违反面向对象的设计的原则。无论是观察者“观察”观察对象,
    还是被观察者将自己的改变“通知”观察者,都不应该直接调用。
   

    1:观察者(Observer)将自己注册到被观察对象(Subject)中,被观察对象将观察者存放在一个容器(Container)里。
2:被观察对象发生了某种变化(如图中的SomeChange),从容器中得到所有注册过的观察者,将变化通知观察者。




命令模式:
    命令模式:命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开,
    委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,
    更不必知道请求是怎么被接收,以及操作是否执行,何时被执行以及是怎么被执行的。




门面模式(外观模式):
二、 定义与结构
门面模式( facade )又称外观模式。 GOF 在《设计模式》一书中给出如下定义:为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
定义中提到的子系统是指在设计中为了降低复杂性根据一定的规则(比如业务、功能),对系统进行的划分。子系统中封装有一些类。客户程序在使用子系统的时候,可能会很零乱。


客户类紧紧地依赖在子系统的实现上。子系统发生的变化,很可能要影响到客户类的调用。而且子系统在不断优化、可重用化的重构路上,会产生更多更小的类。这对使用子系统的客户类来说要完成一个工作流程,似乎要记住的接口太多了。
门面模式就是为了解决这种问题而产生的。

这样就减少了客户程序和子系统之间的耦合,增加了可维护性。
很明显,门面模式有三个角色组成:
1)         门面角色( facade ):这是门面模式的核心。它被客户角色调用,因此它熟悉子系统的功能。它内部根据客户角色已有的需求预定了几种功能组合。
2)         子系统角色:实现了子系统的功能。对它而言, fa?ade 角色就和客户角色一样是未知的,它没有任何 fa?ade 角色的信息和链接。
3) 


六、 总结 
门面模式从整体来看,给我的感觉是,它对于使两层之间的调用粗颗粒化很有帮助,避免了大量细颗粒度的访问。这和 SOA 中的一些观点是相同的。
   门面模式大体介绍完了。请指正:)
门面模式从整体来看,给我的感觉是,它对于使两层之间的调用粗颗粒化很有帮助,避免了大量细颗粒度的访问。这和 SOA 中的一些观点是相同的。
   门面模式大体介绍完了。请指正:)








 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值