![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
iteye_16741
这个作者很懒,什么都没留下…
展开
-
抽象工厂模式
试着总结一下学过的设计模式,就由创建型模式说起吧。 意图 提供一个创建一系列相关活相互依赖对象的接口,而无需指定他们具体的类。(G4) 任务 假设我们需要进行各种数据库操作,可是我们有很多的选择啊,JDBC,Hibernate,Ibatis等等。本来选择一个就OK了,可是变态的Boss为了炫耀我们的技术如何如何强大,竟说我们能够无成本地在这三个解决方案间切换。这下系统该怎么设计呢? 或许你已经...2007-04-14 00:50:26 · 76 阅读 · 0 评论 -
Builder - 创建者模式
对于Builder模式很简单,但是一直想不明白为什么要这么设计,为什么要向builder要Product而不是向知道建造过程的Director要。刚才google到一篇文章,总算清楚了。在这里转贴一下这位richardluo的比喻。 简单地说,就好象我要一座房子住,可是我不知道怎么盖(简单的砌墙,层次较低),也不知道怎么样设计(建几个房间,几个门好看,层次较高),于是我需要找一帮民工,他们会砌墙...2007-04-14 21:35:23 · 99 阅读 · 0 评论 -
Factory - 工厂模式
关于工厂模式,没什么好说的,实在太常见了。不过作为设计模式的完整性,还是将它写出来来。 以前我们创建一个对象时通常是采用new的方式,如 java 代码 Product proa = new ProductA(); Product prob = new ProductB(); 这样进行实例创建的一个结果是,当Product子类越来越多的时候,这样就需...2007-04-17 17:30:08 · 95 阅读 · 0 评论 -
Prototype - 原型创建模式
下面来说说Prototype模式。首先还是照旧先来看看牛人想出Prototype模式的意图。 用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。(G4) 场景 我们手头上已经得到一个Product实例了,现在我们由于业务的要求,需要再获取若干个完全一样或相近的Product,好完成其他的工作。这个时候我们要做的工作就是复制一个。按照以往的做法,我们是每要求复制出一个的时候,我们会先n...2007-04-18 13:02:00 · 102 阅读 · 0 评论 -
Singleton - 单件创建模式
意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。(G4) 场景 不知大家用过Derby这个嵌入式数据库没有,同一时间只能有一个进程访问Derby。这样我们就需要设置一个全局唯一的操作类对进行Derby数据库的各种操作。Singleton便是解决这类问题的一颗银弹。 在Java中static指定的属性在JVM中是全局唯一的,利用这一点我们便可以来实现Singlton的效果。 * 注意...2007-04-24 00:37:18 · 103 阅读 · 0 评论 -
Adapter - 适配器模式
意图 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(GoF) 场景 相信很多人都知道什么是显卡,也有很多人知道显卡的本名——图形适配器。恩,是的,正好这回说说Apater模式,就拿显卡来例子来分析一下Adapter模式。 我们知道显示器(Client)是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备Ta...2007-04-24 19:16:03 · 102 阅读 · 0 评论 -
Bridge - 桥接模式
意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化。(GoF) 场景 现在我们有很多表要处理,同时又有很多操作要做。最简单的做法是在一个类里做完所有的操作,如我们在EJB服务器端的实现中进行JDBC操作。可是这样一来这个类将无比巨大,大到四只眼(眼睛兄)都看不过来! 有什么好办法能够降低这样操作的杂乱性呢?我们注意到这里有两个概念,分别是“表单(Table)”和“操作(Operato...2007-04-27 17:31:00 · 118 阅读 · 0 评论 -
Visitor - 访问者模式
话说有一个银行,有三个窗口,但是每个窗口的智能都是一样的,即都能办理所有的业务。因此每位来银行办理业务的人只要排队就是了,排到你了,就向业务员说明你要办理的业务,然后业务员根据你的业务选择不同的单据,打开不同的账本。……。 业务员此时典型的工作流程是: if (service instanceof Saving){ //存款 ...... }else if (service in...2008-06-23 14:04:32 · 150 阅读 · 0 评论