- 浏览: 60956 次
- 性别:
- 来自: 青岛
文章分类
- 全部博客 (69)
- TWaver (1)
- jBPM (0)
- Struts2.0 (0)
- Hibernate (1)
- Spring (3)
- Swing (4)
- JPA (0)
- EJB (1)
- Birt (0)
- jxl (0)
- Seam (0)
- JSF (1)
- JSP (0)
- Servlet (0)
- JS (0)
- JBoss (0)
- SWT (3)
- Lucene (0)
- 设计模式 (22)
- 其他 (2)
- java (12)
- socket (1)
- android (1)
- ibatis (1)
- sqlite (1)
- junit (1)
- oracle (9)
- poi (1)
- php (1)
- bigbluebutton (1)
最新评论
-
u013246812:
访问不了啊,链接不存在!要么给个源码也行啊!
地方性网站 城阳部落 -
yhman:
原地复活。。。
php+mysql -
wo327808864:
...
socket传输自定义对象 -
锅巴49:
说得好,理解了。
状态模式 -
yhman:
哈哈。。。。
java的文件锁
Mediator Pattern
用一个调停对象来封装一系列的对象交互。调停者使
各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“调停”对象,使得
两头的对象分别和“调停”对象引用或者依赖。
当然并不是所有的对象都需要加入“调停”对象。如果对象之间的关系原本一目了然,调
停对象的加入便是“画蛇添足”。
来看下调停者模式的组成部分吧。
1) 抽象调停者(Mediator)角色:抽象调停者角色定义统一的接口用于各同事角色之间的
通信。
2) 具体调停者(Concrete Mediator)角色:具体调停者角色通过协调各同事角色实现协
作行为。为此它要知道并引用各个同事角色。
3) 同事(Colleague)角色:每一个同事角色都知道对应的具体调停者角色,而且与其他
的同事角色通信的时候,一定要通过调停者角色协作。
代码套用了别人的:
用一个调停对象来封装一系列的对象交互。调停者使
各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“调停”对象,使得
两头的对象分别和“调停”对象引用或者依赖。
当然并不是所有的对象都需要加入“调停”对象。如果对象之间的关系原本一目了然,调
停对象的加入便是“画蛇添足”。
来看下调停者模式的组成部分吧。
1) 抽象调停者(Mediator)角色:抽象调停者角色定义统一的接口用于各同事角色之间的
通信。
2) 具体调停者(Concrete Mediator)角色:具体调停者角色通过协调各同事角色实现协
作行为。为此它要知道并引用各个同事角色。
3) 同事(Colleague)角色:每一个同事角色都知道对应的具体调停者角色,而且与其他
的同事角色通信的时候,一定要通过调停者角色协作。
代码套用了别人的:
package pattern.mediator; public abstract class AbstractMediator { protected Purchase purchase; protected Sale sale; protected Stock stock; // 构造函数 public AbstractMediator() { purchase = new Purchase(this); sale = new Sale(this); stock = new Stock(this); } public abstract void execute(String str,Object...objects); }
package pattern.mediator; public class Mediator extends AbstractMediator { @Override public void execute(String str, Object... objects) { if (str.equals("purchase.buy")) { // 采购电脑 this.buyComputer((Integer) objects[0]); } else if (str.equals("sale.sell")) { // 销售电脑 this.sellComputer((Integer) objects[0]); } else if (str.equals("sale.offsell")) { // 折价销售 this.offSell(); } else if (str.equals("stock.clear")) { // 清仓处理 this.clearStock(); } } private void buyComputer(int number) { int saleStatus = super.sale.getSaleStatus(); if (saleStatus > 80) { // 销售情况良好 System.out.println("采购IBM电脑:" + number + "台"); super.stock.increase(number); } else { // 销售情况不好 int buyNumber = number / 2; // 折半采购 System.out.println("采购IBM电脑:" + buyNumber + "台"); } } private void sellComputer(int number) { if (super.stock.getStockNumber() < number) { // 库存数量不够销售 super.purchase.buyIBMcomputer(number); } super.stock.decrease(number); } private void offSell() { System.out.println("折价销售IBM电脑" + stock.getStockNumber() + "台"); } private void clearStock() { // 要求清仓销售 super.sale.offSale(); // 要求采购人员不要采购 super.purchase.refuseBuyIBM(); } }
package pattern.mediator; public abstract class AbstractColleague { protected AbstractMediator mediator; public AbstractColleague(AbstractMediator mediator) { this.mediator = mediator; } }
package pattern.mediator; public class Purchase extends AbstractColleague { public Purchase(AbstractMediator meditor) { super(meditor); // TODO Auto-generated constructor stub } public void buyIBMcomputer(int number) { super.mediator.execute("purchase.buy", number); } // 不在采购IBM电脑 public void refuseBuyIBM() { System.out.println("不再采购IBM电脑"); } }
package pattern.mediator; import java.util.Random; public class Sale extends AbstractColleague { public Sale(AbstractMediator mediator) { super(mediator); // TODO Auto-generated constructor stub } public void sellIBMComputer(int number) { super.mediator.execute("sale.sell", number); System.out.println("销售IBM电脑" + number + "台"); } public int getSaleStatus() { Random rand = new Random(); int saleStatus = rand.nextInt(100); System.out.println("IBM电脑的销售情况为:" + saleStatus); return saleStatus; } // 折价处理 public void offSale() { super.mediator.execute("sale.offsell"); } }
package pattern.mediator; public class Stock extends AbstractColleague { public Stock(AbstractMediator mediator) { super(mediator); // TODO Auto-generated constructor stub } private static int COMPUTER_NUMBER = 100; // 库存增加 public void increase(int number) { COMPUTER_NUMBER = COMPUTER_NUMBER + number; System.out.println("库存数量为:" + COMPUTER_NUMBER); } // 库存降低 public void decrease(int number) { COMPUTER_NUMBER = COMPUTER_NUMBER - number; System.out.println("库存数量为:" + COMPUTER_NUMBER); } // 获得库存数量 public int getStockNumber() { return COMPUTER_NUMBER; } // 存货压力大了,就要通知采购人员不要采购,销售人员要尽快销售 public void clearStock() { System.out.println("清理存货数量为:" + COMPUTER_NUMBER); super.mediator.execute("stock.clear"); } }
package pattern.mediator; public class Test { public static void main(String[] args) { AbstractMediator mediator = new Mediator(); // 采购人员采购电脑 System.out.println("------采购人员采购电脑--------"); Purchase purchase = new Purchase(mediator); purchase.buyIBMcomputer(100); // 销售人员销售电脑 System.out.println("\n------销售人员销售电脑--------"); Sale sale = new Sale(mediator); sale.sellIBMComputer(1); // 库房管理人员管理库存 System.out.println("\n------库房管理人员清库处理--------"); Stock stock = new Stock(mediator); stock.clearStock(); } }
发表评论
-
亨元模式
2010-05-14 13:18 999flyweight模式的出现是因为面向对象开发有时在设计和性能 ... -
备忘录模式
2010-05-14 11:49 794memento是一个保存另外一个对象内部状态拷贝的对象.这样以 ... -
解释器模式
2010-05-14 11:33 850Interpreter,解释器模式描述了如何构成一个简单的语言 ... -
原型模式
2010-05-13 19:24 723原型模式(Prototype): 用原型实例指定创建对象的种类 ... -
状态模式
2010-05-13 17:20 812State的定义: 不同的状态,不同的行为;或者说,每个状态有 ... -
访问者模式
2010-05-13 15:15 586表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
责任链模式
2010-05-13 13:50 694Chain of Responsibility(CoR) ... -
观察者模式
2010-05-13 01:22 728观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听 ... -
组合模式
2010-05-12 22:58 618组合模式(Composite Pattern)有时候又叫做部分 ... -
迭代器模式
2010-05-12 19:41 713提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对 ... -
装饰模式
2010-05-12 19:29 612Decorator pattern 装饰模式是用于对象的创建, ... -
命令模式
2010-05-12 18:02 647命令模式: 将请求封闭成对象,这可以让你使用不同的请求,队列. ... -
桥梁模式
2010-05-12 01:01 389桥梁(Bridge)模式 桥梁模式是一个非常有用的模式,也 ... -
建造者模式
2010-05-11 23:27 656Builder模式也叫建造者模式或者生成器模式,是由GoF提出 ... -
模板模式
2010-05-11 22:19 667模板方法(Template Method)模式属于行为模式,定 ... -
适配器模式
2010-05-11 16:58 579将一个类的接口转换成客户希望的另外一个接口。Adapter模式 ... -
门面模式
2010-05-11 14:39 1252Facade外观模式: 为子系统中的一组接口提供一个统一接口 ... -
工厂模式
2010-05-11 10:55 654通常来讲,工厂模式分为:简单工厂模式,工厂方法模式和抽象工厂模 ... -
单例模式
2010-05-10 23:53 672主类: public class TheKing { p ... -
代理模式
2010-05-10 18:22 762定义 代理模式( ...
相关推荐
【终结者2.2本地生成版】是一款针对软件授权验证技术的工具,它允许开发者在本地环境下生成软件的授权信息,以实现对软件使用的有效控制。这个版本的终结者主要聚焦于提供一种安全且便捷的方式来验证软件的合法性,...
【P2P终结者增强版】是一款专门针对局域网环境设计的网络管理软件,它允许用户限制局域网内其他计算机的网速。这款工具主要用于优化网络资源分配,防止某些设备过度占用带宽,从而影响整个网络的性能。然而,值得...
4. **隐藏模式**:为了防止被控制的设备发现并禁用,P2P终结者还提供了隐藏运行模式,使得软件能在后台安静地工作。 5. **安装与配置**:WinPcap_4_0_2.exe是Windows Packet Capture库,它是P2P终结者等网络监控...
程序采用100%纯汇编语言编写,实现了文件夹加/解密功能,程序体积小巧,加密速度快,支持U盘/移动硬盘上面的文件夹加密,方便安全,终结者文件夹加密大师有简单/高级两种加密模式。 终结者文件夹加密大师软件的功能...
P2P终结者是由Net.Soft工作室开发的一套专门用来控制企业网络P2P下载流量的网络管理软件(zol提供P2P终结者下载)。 P2P终结者针对目前P2P软件过多占用带宽的问题,提供了一个非常简单的解决方案。P2P终结者基于底层...
标题“反p2p终结者杀死局域网中的p2p终结者”指的是一个特定的软件或技术解决方案,用于在局域网环境中对抗P2P(peer-to-peer)终结者软件。P2P终结者是一种网络管理工具,它通常被用来限制或阻止局域网内的P2P文件...
在局域网终结者中,WinPcap可能被用来抓取和分析网络流量,以便找出可以利用的网络行为模式或IP地址信息。 **局域网终结者.exe** 这个可执行文件是局域网终结者的主要程序。它通过发送特定的数据包或者模拟IP冲突来...
4. **隐藏模式**:为了防止被控制的设备检测到并反制,P2P终结者还提供了隐藏模式,使得软件的运行更加隐蔽。 5. **远程管理**:对于大型网络环境,管理员可以通过远程控制功能管理不同位置的设备,实现全局的网络...
《P2P网络终结者4.7:局域网带宽管理利器》 P2P网络终结者4.7是一款专为局域网环境设计的带宽管理工具,它的主要功能在于帮助网络管理员或者普通用户有效地控制局域网内各台计算机对网络资源的占用,确保网络的公平...
玩家可以通过与五子棋终结者的对局,理解其思考模式,从而提高自身的棋艺。 五子棋终结者2.0的出现,不仅展示了计算机在解决复杂策略问题上的能力,也推动了棋类游戏AI的发展。它为研究者提供了深入研究五子棋策略...
标题中的“p2p终结者无线网卡专用版”是一个软件的特定版本,这通常意味着该软件是为无线网络环境优化的,特别是针对无线网卡的使用。P2P(peer-to-peer)终结者是一种网络管理工具,它主要用于限制局域网内其他设备...
《P2P终结者2.07免安装版:网络流量管理利器》 P2P终结者2.07免安装版是一款专为用户设计的网络流量管理工具,尤其适用于那些面临网络带宽被过度占用问题的用户。该版本无需进行繁琐的安装过程,用户可以直接运行,...
《封包终结者V1.2.21:网络数据包的掌控者》 在信息技术领域,网络数据包的分析和处理是至关重要的一个环节,尤其是对于网络安全、软件开发以及网络调试人员而言。"封包终结者V1.2.21"就是这样一款强大的工具,它...
程序永久免费,使用100%汇编语言编写,实现了文件夹加/解密的功能,程序体积小巧,加密速度快,支持U盘/移动硬盘上面的文件夹加密,方便安全,终结者文件夹加密大师有简单/高级/Vista(Server2008)三种加密模式,下面...
《P2P后台终结者源码解析》 P2P后台终结者,作为一个技术话题,主要涉及的是网络通信和系统管理领域。P2P(Peer-to-Peer)是一种分布式网络架构,它允许网络中的每个节点既是客户端也是服务器,能够直接进行数据...
标题中的“反p2p终结者”显然指的是一款针对P2P(peer-to-peer)网络的防护软件或工具,其主要目标是防止P2P软件对网络资源的过度占用或者阻止恶意P2P活动。P2P网络是一种分布式网络架构,用户之间可以直接交换数据...
【P2P终结者】是一种网络管理工具,主要用于局域网环境中的网速控制。它以其简单易用的特点,只需解压即可运行,为用户提供了一种便捷的方式来限制局域网内的P2P流量,以保障网络的稳定和高效运行。 在现代的网络...
程序体积小巧,加密速度快,支持U盘/移动硬盘上面的文件夹加密,方便安全,终结者文件夹加密大师有简单/高级/Vista(Server2008)三种加密模式,下面分别做一下介绍: (a):简单加密模式:打开软件时默认使用简单模式...
4. **隐藏模式**:为了防止被限速的设备发现并反制,P2P终结者还提供了隐蔽运行模式,使得控制端更加隐秘。 5. **易用性**:“Readme-说明.htm”文件提供了详细的使用指南,即便是对网络管理不熟悉的用户也能轻松...
标题中的"P2P终结者-家庭版.rar"指的是一个针对家庭用户设计的P2P流量控制软件的压缩包文件。P2P(Peer-to-Peer)技术是一种网络通信模式,其中每个参与者既是服务的消费者也是服务的提供者,常见的应用如BitTorrent...