随笔分类 - 设计模式
摘要:0.前言在前面一篇博客设计模式之代理模式(Proxy)中我们已经讲解了一部分代理模式,下面我们继续讲解代理的有关内容,包括代理的分类以及java中的代理。1.代理的分类 事实上代理能够被分为很多种类,大致有如下这些:虚代理、远程代理、copy-on-write代理、保护代理、Cache代理、防火墙代理、同步代理、智能指引。在这里我们会介绍虚代理和保护代理。 在设计模式之代理模式(Proxy)中提到的代理就是一个典型的虚代理的实现。起初每个代理对象只有用户编号和姓名数据,直到需要的时候,才会把整个用户的数据装载到内存中来。也就是说,要根据需要来装载整个UserModel的数据,虽然用户数据对..
阅读全文
摘要:1.前言 之前写过一篇设计模式之简单工厂(Factory method),在这篇文章的“7.可配置的简单工厂实例”中,客户端没有传入参数,这是因为在factory中已经定义了需要读取的配置文件。但是这样有个缺点就是灵活性不够,必须明确指定需要读取配置文件中的某一项,比如上面就定义了必须读取的是配置文件中的ImplClass=edu.sjtu.erplab.yanmo.simplefactory.Impl2这一个条目,假设配置文件中有多个条目,我们想要通过客户端传入一个简单的参数ImplClass来动态调用,那么该实例是不能完成。2.正文2.1利用反射机制在客户端传入具体的"包.类名&
阅读全文
摘要:参考文献参考1:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns参考2:http://en.wikipedia.org/wiki/Design_pattern_(computer_science)参考3:http://zh.wikipedia.org/wiki/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F_(%E8%AE%A1%E7%AE%97%E6%9C%BA)正文You can find an overview of a lot design patterns i
阅读全文
摘要:1.引言在学习JUnit的时候,看到一段话“JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test的对象;当调用TestSuite对象的run()方法是,会遍历自己容纳的对象,逐个调用它们的run()方法”。就来学习什么是组合模式。2.应用实例在实现跟商品有关的应用系统的时候,一个很常见的功能就是商品类别树的管理,比如有以下的商品类别树:——————————————————————————————————-服装 -男装 -衬衣 -夹克 -女装 -裙子 -套装—————————————————————————————...
阅读全文
摘要:0.参考文献参考1:http://tkhhappyboy.blog.163.com/blog/static/114185815201112473727410/参考2:http://milenfan.iteye.com/blog/756060参考3:http://java.chinaitlab.com/model/758440.html参考4:http://www.the2ndmoon.net/weblog/?p=2121.概述缺省适配模式为一个接口提供缺省实现(本例中接口InterfaceA的缺省实现是AbstractClassB),这样的类型可以从这个缺省实现(AbstractClassB)
阅读全文
摘要:1.场景在一个HR(人力资源)应用项目中客户提出,当选择一个部门或是分公司的时候,要把这个部门或者分公司下的所有员工都显示出来,而且不使用分页,方便他们进行业务处理。在显示全部员工的时候, 只需要显示姓名即可,但是也需要提供如下功能:在必要的时候可以选择并查看某位员工的详细信息(user表中的所有字段)。实现起来也非常简单,只需要查询对应deptid下的user表就可以了(这样进行的查询是全表查询,也就是会查询表中的所有字段)。但是实现看似简单,功能也正确,但是蕴涵了一个比较大的问题。那就是,一次性访问的数据条数过多,而且每条描述的数据量又很大,这样操作将会消耗较多的内存。而从用户的角度来说,
阅读全文
摘要:1.参考文献:参考文献1:研磨设计模式——陈臣参考文献2:前面写过一篇 缺省适配模式本文将采用同时支持日志文件与数据库的日志管理系统来说明适配器模式。2.适配器模式解析2.1适配器模式的定义将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2.2.适配器模式的结构与说明Client:客户端,调用自己需要的领域接口TargetTarget:定义客户端需要的跟特定领域相关的接口Adaptee:已经存在的接口,通常能满足客户端的功能需求,但是接口和客户端要求的特定领域接口不一致,需要被适配类1是Adapter:适配器,把Adaptee适.
阅读全文
摘要:http://baike.baidu.com/view/66964.htm综述Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。Adapter:将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。Builder:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Chain of Responsibility:为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请
阅读全文
摘要:参考文献参考1:http://www.iteye.com/topic/60179参考2:研磨设计模式参考3:http://cantellow.iteye.com/blog/838473参考4:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns(2011-11-16添加)构造方法私有化(ps:2012-4-12)类的封装性不只是体现在对属性的封装上,也可以体现在对方法的封装上。对方法的封装包含了对构造方法的封装。我们可以将构造方法的访问权限设定为private,代码实例如下:View Code pu
阅读全文
摘要:1.参考文献:http://chjavach.iteye.com/blog/8003252.解析在java编程中,我们要做到“面向接口编程”。下面回顾一些接口方面的知识:(1)Java中接口的概念 在Java中接口是一种特殊的抽象类,跟一般的抽象类相比,接口里面的所有方法都是抽象方法(也因此,接口中的方法可以加abstract,也可以不加),接口里面的所有属性都是常量。也就是说,接口里面是只有方法定义而不会有任何方法实现。(2)接口用来干什么 通常用接口来定义实现类的外观,也就是实现类的行为定义,用来约束实现类的行为。接口就相当于一份契约,根据外部应用需要的功能,约定了实现类应该要实现的功..
阅读全文
摘要:1参考文章参考1:http://topic.csdn.net/u/20080722/16/e7fcffc3-3d54-48f6-9d3a-2cd39073a287.html参考2:http://www.java63.com/design_pattern/iterator_pattern.html参考3:http://blog.csdn.net/aaaaaaaa0705/article/details/6282305问题起源想找一些关于迭代器next()和hasNext()方法的内容,最后都归宗到迭代器以及设计模式中的迭代器模式。现在记录一下,有空写一篇学习心得。一、什么是迭代模式Iterato
阅读全文
摘要:1.参考文献参考文献1:http://blog.csdn.net/ipqxiang/archive/2007/12/20/1955677.aspx参考文献2:http://baike.baidu.com/view/1580269.htm#sub1580269参考3:http://en.wikipedia.org/wiki/Abstract_factory_pattern#Java参考文献4:反射在工厂模式上的应用2.概念描述: 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端(Client)提供.
阅读全文