- 浏览: 479142 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
gapper:
多谢!!!
软件项目解决方案模板 -
lxyizy521:
感谢你无私的分享,正头疼文档的事情呢。
软件项目解决方案模板 -
flyisland:
不错的资料收集的心得,多谢分享!
如何从小工到专家——Dreyfus模型应用 -
a254124185:
Java编码规范及实践 -
clj2008tom:
LZ好久没更新了,呵呵
graphviz 在redhat as4 下的安装
参观者模式主要对一组固定结构的对象进行访问,一般和组合模式一起使用。
abstract class Hardware{ protected double price; protected double getPrice(); void accept(IComputerVisitor visitor); } class Mainboard extends Hardware{ void accept(IComputerVisitor visitor){ visitor.visitMainboard(this); } } class Memory extends Hardware{ void accept(IComputerVisitor visitor){ visitor.visitMemory(this); } } class Display extends Hardware( void accept(IComputerVisitor visitor){ visitor.visitDisplay(this); } } class NetworkAdapter extends Hardware{ void accept(IComputerVisitor visitor){ visitor.visitNetworkAdapter(this); } } class Computer extends Hardware[ private List<Hardware> parts = new Arraylist(); public List<Hardware> add(Hardware hardware){ parts.add(hardware); return parts; } public void accept(IComputerVisitor visitor){ for(Hardware h: parts){ h.accept(visitor); } } } interface IComputerVisitor{ void visitMainboard(Mainboard mainboard); void visitNetworkAdapter(NetworkAdapter adapter); void visitDisplay(Display display); void visitMemory(Memory memory); } //遍历 computer 的每个部件,汇总价格 class PriceVisitor implements IComputerVisitor{ //总价格 private double amountPrice; void visitMainboard(Mainboard mainboard){ amountPrice += mainboard.getPrice(); } void visitNetworkAdapter(NetworkAdapter adapter) { amountPrice += adapter.getPrice(); } void visitDisplay(Display display) { amountPrice += display.getPrice(); } void visitMemory(Memory memory) { amountPrice += memory.getPrice(); } }
Client:
Computer computer = new Computer(); Mainboard mainboard = new Mainboard(); NetworkAdapter networkAdapter = new NetworkAdapter(); Display display = new Display(); Memory memory = new Memory(); computer .add(mainboad) .add(networkAdapter) .add(display) .add(memory); IComputerVisitor visitor = new PriceVisitor(); visitor.accept(computer);
发表评论
-
如何在公司中引入新思路——fearless change
2009-09-28 00:21 1377我前面的博客也提到,在一个公司中,引入一个新的想法,获得成功并 ... -
Code Review Patterns
2009-06-23 09:57 1478整理了一下Code Review中 ... -
团队分析与设计(TeamAnalysisDesignPattern)
2009-04-11 14:31 14231)Problem 问题域比较复杂,团队中没有人能 ... -
极限会议模式(ExtremeMeeting)
2009-03-17 13:38 1853名字自己随便取的,如有雷同,纯属巧合。 1. Proble ... -
5W问题分析模式
2009-03-10 08:41 01. Problem 当遇到问题,手足无措时。 2. So ... -
影响分析模式(InfluenceAnalysisPattern)
2009-03-06 23:58 12261. Problem 解决问题,进行决策和面对改变时, ... -
全局目标导向模式(GlobalTargetOrientedPattern)
2009-03-05 23:08 9341. Problem 一个团队在做事情的过 ... -
通讯录模式(AddressListPattern)
2009-03-02 22:10 1492模式是实践的抽象,今天我来总结一下通讯录模式。 1. Pr ... -
导航者模式(NavigatorPattern)
2009-02-28 10:40 01. Problem 人是容易犯错的,而且但线条的。 ... -
Double Dispatch(双分派)
2009-02-04 11:24 2465参考资料: http://en.wikipedia ... -
有人的地方就有江湖
2009-01-30 08:54 2297有人的地方就有 ... -
设计模式快速参考-模板方法模式
2008-12-06 07:21 1066abstract class TravelTemplate ... -
设计模式快速参考-策略模式
2008-12-06 07:17 1174//密钥对生成接口 interface IKeyPairGen ... -
设计模式快速参考-观察者模式
2008-12-06 07:13 1281//主题,这里是快餐店 class SnackShop{ ... -
设计模式快速参考-命令模式
2008-12-06 07:10 1278interface ICommand{ void e ... -
设计模式快速参考-代理模式
2008-12-06 07:07 1212class FileDownloader( publ ... -
设计模式快速参考-外观模式
2008-12-06 07:03 1048为一组类提供简单的外部接口,使外部调用者不需要和所 ... -
设计模式快速参考-组合模式
2008-12-06 07:00 1047abstract class Hardware{ } cla ... -
设计模式快速参考-适配器模式
2008-12-06 06:49 1242interface Powerable{ 110v ... -
设计模式快速参考-单例模式
2008-12-06 06:46 1189class Singleton{ private Si ...
相关推荐
设计模式精解-GoF-23种设计模式解析--附C++源代码,帮助理解!
设计模式---策略者模式---根据《Head First 设计模式》自己实现
java设计模式------------------------------------建造者模式
26种设计模式 ------------------- 26种设计模式 -------------------
设计模式实验报告-建造者,有代码实例和运行结果
设计模式--装饰者模式java例子
设计模式_--_工厂模式和单件模式设计模式_--_工厂模式和单件模式
免费提供个人设计模式简易代码,代码结构层次清晰,并且内含基本所有的注释,非常有利于初学者学习设计模式
设计模式的应用--论文素材1
设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略模式、模板方法、访问者 此PPT实例便于...
设计模式专题---设计模式示例代码(全)(python--c++)
设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式
设计模式--观察者模式java例子
JAVA设计模式--程序设计--反射--注解--泛型
java设计模式中的单例模式,而单例模式又分为饿汉模式和懒汉模式
设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx
创建型设计模式---工厂设计模式实现
创建型设计模式----抽象工厂模式
设计模式源代码--工厂模式与单例。 代码是本人在学习设计模式时,所写的例子。 适合设计模式的初学者看。