您的位置:首页 > 编程语言 > Java开发

常用设计模式总结及体现

2012-04-09 14:56 162 查看
在前面给大家详细介绍了java中常用的十种设计模式,下面对其进行一个总结:
单例模式(Sington):一个类有且只有一个实例,分为两种,一种是懒汉式单例,一种是饿汉式单例,区别是懒汉式单例在需要的时候创建,而饿汉式单例是程序启动的时候就加载了。我们在进行JDBC连接数据库的时候可以使用单例模式。
代理模式:静态代理(static proxy):真实对象和代理对象有共同的接口,代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其它的操作,相当与对真实对象进行封装。
动态代理(Dynamic proxy):我们可以随意的拓展我们的逻辑,而不是执行单一逻辑
代理模式在Spring中的AOP思想中有很好的体现
观察者模式(Observer):详细理解见我的博客,在java中AWT章节事件监听程序有很好的体现:当我们写Button的一个事件监听器,里面的方法会自动得到调用,使用了观察者模式
适配器模式(Adaptor):详细理解见我的博客,可以分为类适配器模式、对象适配器模式、缺省适配器模式、在java中AWT章节事件监听程序,我们实现一个Listener,Listener是一个接口,我们不用实现里面所有的方法,而是根据需要实现相应的方法,这里用到了缺省的适配器模式,在JUint中我们编写的测试方法会和JUint中的runTest方法相匹配,在里面实际上使用了我们的适配器模式。
装饰模式(Decorar):详细理解见我的博客,通俗的说不同的功能组合会实现不同的效果,在java中文件流有很好的体现
策略模式(Strategy):详细理解见我的博客,个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++z中可以用虚类),然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为,在java中的集合章节Collections.Sort()方法中有所体现,当我们传入相应的排序算法或比较器的时候,会得到相应的结果
工厂模式(Factory):可以分为简单工厂模式、抽象工厂模式和工厂方法模式,我们不需要把我们定义的实现类暴露给用户,而是把接口或者抽象类给用户,当用户传入不同的参数得到不同的结果。简单工厂模式与工厂方法模式的区别在于工厂类是否抽象或者说是否定义为一个接口或抽象类,两者各有优劣。抽象工厂与工厂方法模式的区别在于对工厂的抽象程度上,抽象工厂模式中可以定义多个产品,而工厂方法模式中只针对于某类产品进行抽象。工厂模式在我们的Spring中依赖注入有体现。
组合模式(Composite):详细理解见我的博客,大体理解就是操作组合对象和操作单个对象对于用户来说没什么区别,因为都会得到相应的结果。在JUint中我们编写的TestCase和TestSuite在执行的时候使用了我们的组合模式。
模板方法模式(Template):详细理解见我的博客,大体理解是定义一组模板,模板中的细节方法由用户去实现,而运行的时候我们只需要调用我们的模板方法,就会输出用户相应的业务逻辑,在JUint中setUp和TearDown这两个由JUnit在测试前自动调用的方法使用了模板方法模式。
命令模式(Command):详细理解见我的博客,在命令模式中,最主要的一点是将命令封装成为一个对象,或者说是一个接口或抽象类,客户端发出命令给请求者,请求者调用具体命令对象,而具体命令对象调用接受者对象,最后接受者对象收到命令执行,将结果返回给客户端,在JUnit中我们编写的测试类只需要继承TestCase,编写我们的逻辑,然后将些测试用例组成请求(可能是一个或者多个),发送到JUnit,然后由JUnit执行,我们不用去管JUnit是如何执行的,只要求Juint返回相应的结果就可以了。
JUnit中涉及到的设计模式:
观察者模式、适配器模式、组合模式、模板方法模式、命令模式、

我觉得掌握这些设计模式的最好的方法就是联系我们生活实际,这些模糊的概念就很容易清晰了,希望我总结的设计模式对大家理解设计模式有所帮助,如果有写的不好的地方,还请指正交流,一起探讨学习!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息