![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 79
huashanlunjian
这个作者很懒,什么都没留下…
展开
-
代理设计模式
一、引子 我们去科技市场为自己的机器添加点奢侈的配件,很多DIYer都喜欢去找代理商,因为在代理商那里拿到的东西不仅质量有保证,而且价格和售后服务上都会好很多。客户通过代理商得到了自己想要的东西,而且还享受到了代理商额外的服务;而生产厂商通过代理商将自己的产品推广出去,而且可以将一些销售服务的任务交给代理商来完成(当然代理商要和厂商来共同分担风险,分配利润),这样自己就可以花更多的心思在产品...原创 2011-04-22 09:28:00 · 75 阅读 · 0 评论 -
代理模式的运用
考虑这样一种情况。某个系统要根据用户的权限来判断是否能操作。那么可以这么写: class ViewAction{ String permission; public ViewAction(String permission ){ this.permission = permission; } public void DoAction(){ if(permissi...原创 2011-07-15 16:24:10 · 97 阅读 · 0 评论 -
代理模式
一个顾客需要买火车票,但是他没有时间。这时正好一个人说,你给我一定费用,我帮你买票。代码如下: package com.pattern.proxy; //抽象顾客(中介和顾客对于售票的人来说,都是顾客) abstract class AbstractClient { public abstract void doSomething(); } // 顾客 class C...原创 2011-07-14 17:45:54 · 67 阅读 · 0 评论 -
迭代器(Iterator)模式
迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。 从定义可见,迭代器模式是为容器而生。很明显,对容器对象的访问必然涉及到遍历算法。你可以一股脑的将遍历方法塞到容器对象中去;或者根本不去提供什么遍历算法,让使用容器的人自己去实现去吧。这两种情况好像都能够解决问题。 然...原创 2010-09-28 17:33:20 · 62 阅读 · 0 评论 -
装饰模式
装饰模式是在一个对象的外围创建一个称为装饰器的封装,动态地给这个对象添加一些额外的功能。以对客户端透明的方式扩展对象的功能。 装饰器中的继承的实质是为了类的兼容的需要,便于参数引用可以层层传递兼容,而不是通过继承实现功能的扩展,功能扩展主要在实例的引用。一般来说是纵向结构,如果只是一层继承实现,其余装饰类用横向实现的话,也是可以的,但是这个和纵向相比没有什么不同。 装饰器模式主要由两部分组成,...原创 2010-09-28 16:30:01 · 63 阅读 · 0 评论 -
状态模式
状态模式很简单,无论是理解,还是实现,都很简单。一、定义:1,状态模式允许一个"对象"在其内部状态改变的时候改变其行为。2,状态模式的角色:抽象状态,具体状态,环境(context)角色状态模式的大多数时候是为了解决if--else过多的问题的。当if-else过多时,若重新加入一种状态,会修改原来的代码。而使用状态模式,对原来的代码没有改动,只需添加新增的状态即可。 如下QQ状态例子: 抽...原创 2010-09-28 15:01:59 · 63 阅读 · 0 评论 -
命令(command)模式
《设计模式》中命令模式的定义为:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作 命令模式可以将“动作的请求者”和“动作的执行者”分隔开来(解耦) Undo、事务及延伸在定义中提到,命令模式支持可撤销的操作。其实命令模式之...原创 2010-09-28 10:03:24 · 122 阅读 · 0 评论 -
观察者(Observer)模式
观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。GOF给观察者模式如下定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 在这里先讲一下面向对象设计的一个重要原则——单一职责原则。因此系统的每个对象应该将重点放在问题域中的离散抽象上。因此理想的情况下,一个对象只做一件事情。这样在开发中也就带来了诸...原创 2010-09-27 14:34:20 · 117 阅读 · 0 评论 -
代理模式
代理模式是对象的结构模式。代理模式给一个对象提供了一个代理对象,并由代理对象控制对象的引用。 所谓代理,就是一个人或一个机构代表另一个人或机构采取行动。 代理模式在设计模式中的定义就是:为其他对象提供一种代理以控制对这个对象的访问。说白了就是,在一些情况下客户不想或者不能直接引用一个对象,而代理对象可以在客户和目标对象之间起到中介作用,去掉客户不能看到的内容...原创 2010-09-27 10:21:28 · 60 阅读 · 0 评论 -
门面模式(Facade Pattern)
门面模式说对象的结构模式。外部与一个子系统的通信必须通过一个系统的一个门面对象进行,这就是门面模式。门面模式也成为外观模式、正面模式。 这个模式在系统中经常被用到,也是一个比较简单的模式。 如下例子,用户只需要知道去开机就可以了,其不必知道开机的具体过程。 门面模式的UML图: 代码: 门面Computer.java package Fa...原创 2010-09-26 22:42:26 · 58 阅读 · 0 评论 -
适配器模式
在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 有两类适配器模式: ·对象适配器模式 - 在这种适配器模式中,适配器容纳一个它我包裹的类的实例。在这种情况下,适配器调用被包裹对 象的物理实体。 ·类适配器模...原创 2010-09-26 16:53:36 · 74 阅读 · 0 评论 -
单例模式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 作用:1.节约内存资源,个人觉得这...原创 2013-03-26 16:19:13 · 65 阅读 · 0 评论