实例介绍
《Design Patterns》Complete Implementation (by Java) Author: Jerry Shen Version : 0.5 此目录里包括了一书中所有23种设计模式的实现(Java 版)源码 关于代码的几点说明: 1. 代码为根据个人对Design Pattern的学习理解写出(>90%原创), 难免有错误的地方,希望大家指出。 2. 每个Pattern均是一个目录,其目录名即是Pattern的名字, 所有代码用JDeveloper 9i 和JBuilder 6.0编写,并编译、运行通过。 3. 示例中的类,方法的命名规则和各个对象间的协作,基本同原书, 所以可以在看书的同时加以参照。 4. 为图方便,绝大多数示例的效果是用printf表现之。 虽然不能体现Pattern的威力,效果也不够直观,但希望依然能体现Pattern的 骨架,比如一个Pattern的类是如何组织的,各个对象间的协作又是怎样。 5. 所有代码是对Pattern做了相当的简化,有许多深层次的考虑希望大家一起挖掘。 6. 鉴于本人水平和时间也较紧张,代码写的比较烂,设计中考虑不周,效率不高 ,甚至错误的地方还请大家指出。 对于后续版本的设想: 1. 增加对每个模式的UML类图,对象图,交互图等。 2. 修正现在的代码。 3. 重新设计一些解决特定问题的示例,并使示例可视化。 4. 增加对每个示例的文字详细说明。 5. 设计一些同时含有多种模式的示例。 6. 考虑C++的实现版本。
【实例截图】
【核心代码】
4744302542928675392.zip
├── Adapter
│ ├── Adapter.jpr
│ ├── classes
│ │ ├── Adapter.cdi
│ │ ├── connections.xml
│ │ ├── Shape.class
│ │ ├── Text.class
│ │ ├── TextShapeClass.class
│ │ └── TextShapeObject.class
│ └── src
│ ├── Shape.java
│ ├── Text.java
│ ├── TextShapeClass.java
│ └── TextShapeObject.java
├── Bridge
│ ├── Bridge.jpr
│ ├── classes
│ │ ├── Bridge.cdi
│ │ ├── connections.xml
│ │ ├── Test.class
│ │ ├── TextBold.class
│ │ ├── Text.class
│ │ ├── TextImp.class
│ │ ├── TextImpLinux.class
│ │ ├── TextImpMac.class
│ │ └── TextItalic.class
│ └── src
│ ├── Test.java
│ ├── TextBold.java
│ ├── TextImp.java
│ ├── TextImpLinux.java
│ ├── TextImpMac.java
│ ├── TextItalic.java
│ └── Text.java
├── Builder
│ ├── Builder.jpr
│ ├── classes
│ │ ├── Builder.cdi
│ │ ├── ConcreteHouseBuilderA.class
│ │ ├── connections.xml
│ │ ├── HouseBuilder.class
│ │ ├── House.class
│ │ ├── HouseDirector.class
│ │ └── TestClient.class
│ └── src
│ ├── ConcreteHouseBuilderA.java
│ ├── HouseBuilder.java
│ ├── HouseDirector.java
│ ├── House.java
│ └── TestClient.java
├── ChainOfResponsibility
│ ├── ChainOfResponsibility.jpr
│ ├── classes
│ │ ├── Chain.class
│ │ ├── ChainOfResponsibility.cdi
│ │ ├── connections.xml
│ │ ├── Manager.class
│ │ ├── Others.class
│ │ ├── Programmer.class
│ │ ├── ProjectManager.class
│ │ ├── QA.class
│ │ └── Test.class
│ └── src
│ ├── Chain.java
│ ├── Manager.java
│ ├── Others.java
│ ├── Programmer.java
│ ├── ProjectManager.java
│ ├── QA.java
│ └── Test.java
├── Command
│ ├── classes
│ │ ├── Command.cdi
│ │ ├── Command.class
│ │ ├── connections.xml
│ │ ├── Fan.class
│ │ ├── FanOffCommand.class
│ │ ├── FanOnCommand.class
│ │ ├── Light.class
│ │ ├── LightOffCommand.class
│ │ ├── LightOnCommand.class
│ │ ├── Switch.class
│ │ └── TestCommand.class
│ ├── Command.java
│ ├── Command.jpr
│ └── TestCommand.java
├── Composite
│ ├── classes
│ │ ├── Composite.cdi
│ │ ├── connections.xml
│ │ ├── Employee.class
│ │ ├── empTree.class
│ │ ├── JxFrame$1.class
│ │ └── JxFrame.class
│ ├── Composite.jpr
│ └── src
│ ├── Employee.java
│ ├── empTree.java
│ └── JxFrame.java
├── Decorator
│ ├── classes
│ │ ├── Component.class
│ │ ├── ConcreteComponent.class
│ │ ├── ConcreteDecoratorA.class
│ │ ├── connections.xml
│ │ ├── Decorator.cdi
│ │ ├── Decorator.class
│ │ ├── SwingApp.class
│ │ ├── TableBubbleSortDecorator.class
│ │ ├── TableFilterDecorator.class
│ │ ├── TableModelDecorator.class
│ │ ├── TableSortDecorator.class
│ │ ├── Test$1.class
│ │ ├── Test1.class
│ │ └── Test.class
│ ├── Decorator.jpr
│ └── src
│ ├── Component.java
│ ├── ConcreteComponent.java
│ ├── ConcreteDecoratorA.java
│ ├── Decorator.java
│ ├── TableBubbleSortDecorator.java
│ ├── TableFilterDecorator.java
│ ├── TableModelDecorator.java
│ ├── TableSortDecorator.java
│ ├── Test1.java
│ └── Test.java
├── Facade
│ ├── classes
│ │ ├── connections.xml
│ │ ├── Door.class
│ │ ├── Facade.cdi
│ │ ├── FacadeRoom.class
│ │ ├── Test.class
│ │ └── Wall.class
│ ├── Facade.jpr
│ └── src
│ └── mypackage
│ └── Test.java
├── FactoryMethod
│ ├── classes
│ │ ├── connections.xml
│ │ ├── Factory.class
│ │ ├── FactoryMethod.cdi
│ │ ├── WindowBig.class
│ │ ├── Window.class
│ │ └── WindowSmall.class
│ ├── FactoryMethod.jpr
│ └── src
│ ├── Factory.java
│ ├── WindowBig.java
│ ├── Window.java
│ └── WindowSmall.java
├── FlyWeight
│ ├── classes
│ │ ├── ConcreteFont.class
│ │ ├── connections.xml
│ │ ├── FlyWeight.cdi
│ │ ├── Font.class
│ │ ├── FontFactory.class
│ │ └── Test.class
│ ├── FlyWeight.jpr
│ └── src
│ ├── ConcreteFont.java
│ ├── FontFactory.java
│ ├── Font.java
│ └── Test.java
├── Interpreter
│ ├── classes
│ │ ├── AndExp.class
│ │ ├── BooleanExp.class
│ │ ├── connections.xml
│ │ ├── Context.class
│ │ ├── Interpreter.cdi
│ │ ├── NotExp.class
│ │ ├── OrExp.class
│ │ ├── Test.class
│ │ └── VariableExp.class
│ ├── Interpreter.jpr
│ └── src
│ ├── AndExp.java
│ ├── Context.java
│ ├── mypackage
│ │ └── BooleanExp.java
│ ├── NotExp.java
│ ├── OrExp.java
│ ├── Test.java
│ └── VariableExp.java
├── Iterator
│ ├── classes
│ │ ├── Aggregate.class
│ │ ├── connections.xml
│ │ ├── DataVector.class
│ │ ├── Iterator.cdi
│ │ ├── Iterator.class
│ │ ├── Test.class
│ │ └── VectorIterator.class
│ ├── Iterator.jpr
│ └── src
│ ├── Aggregate.java
│ ├── data.txt
│ ├── DataVector.java
│ ├── Iterator.java
│ ├── Test.java
│ └── VectorIterator.java
├── Mediator
│ ├── classes
│ │ ├── ColleagueA.class
│ │ ├── ColleagueB.class
│ │ ├── ColleagueC.class
│ │ ├── Colleague.class
│ │ ├── ConcreteMediator.class
│ │ ├── connections.xml
│ │ ├── Mediator.cdi
│ │ ├── Mediator.class
│ │ └── Test.class
│ ├── Mediator.jpr
│ └── src
│ ├── ColleagueA.java
│ ├── ColleagueB.java
│ ├── ColleagueC.java
│ ├── Colleague.java
│ ├── ConcreteMediator.java
│ ├── Mediator.java
│ └── Test.java
├── Memento
│ ├── classes
│ │ ├── CaretakerTest.class
│ │ ├── connections.xml
│ │ ├── Memento.cdi
│ │ ├── TextMemento.class
│ │ └── TextOriginator.class
│ ├── Memento.jpr
│ └── src
│ ├── CaretakerTest.java
│ └── TextOriginator.java
├── MyJavaWorks.jws
├── Observer
│ ├── classes
│ │ ├── ConcreteSubject.class
│ │ ├── connections.xml
│ │ ├── ObserverA.class
│ │ ├── ObserverB.class
│ │ ├── Observer.cdi
│ │ ├── Observer.class
│ │ ├── Subject.class
│ │ └── Test.class
│ ├── Observer.jpr
│ └── src
│ ├── ConcreteSubject.java
│ ├── ObserverA.java
│ ├── ObserverB.java
│ ├── Observer.java
│ ├── Subject.java
│ └── Test.java
├── patterns
│ └── abstract_factory
│ ├── AbstractFactory.jpr
│ ├── classes
│ │ ├── AbstractFactory.cdi
│ │ ├── BedRoom.class
│ │ ├── BedRoomDoor.class
│ │ ├── BedRoomWall.class
│ │ ├── connections.xml
│ │ ├── Door.class
│ │ ├── LivingRoom.class
│ │ ├── LivingRoomDoor.class
│ │ ├── LivingRoomWall.class
│ │ ├── Room.class
│ │ ├── RoomMaker.class
│ │ └── Wall.class
│ └── src
│ ├── BedRoomDoor.java
│ ├── BedRoom.java
│ ├── BedRoomWall.java
│ ├── Door.java
│ ├── LivingRoomDoor.java
│ ├── LivingRoom.java
│ ├── LivingRoomWall.java
│ ├── Room.java
│ ├── RoomMaker.java
│ └── Wall.java
├── Prototype
│ ├── classes
│ │ ├── connections.xml
│ │ ├── Graphic.class
│ │ ├── GraphicTool.class
│ │ ├── IGraphic.class
│ │ ├── LineSymbol.class
│ │ ├── NoteSymbol.class
│ │ ├── prototype.cdi
│ │ └── SymbolLoader.class
│ ├── prototype.jpr
│ └── src
│ ├── GraphicTool.java
│ ├── LineSymbol.java
│ ├── mypackage
│ │ ├── Graphic.java
│ │ └── IGraphic.java
│ ├── NoteSymbol.java
│ └── SymbolLoader.java
├── Proxy
│ ├── classes
│ │ ├── connections.xml
│ │ ├── Graphic.class
│ │ ├── ImageProxy.class
│ │ ├── JxFrame$1.class
│ │ ├── JxFrame.class
│ │ ├── PageProxy.class
│ │ ├── Proxy.cdi
│ │ ├── ProxyDisplay.class
│ │ └── Test.class
│ ├── Proxy.jpr
│ └── src
│ ├── elliott.jpg
│ ├── Graphic.java
│ ├── ImageA.java
│ ├── JxFrame.java
│ ├── PageProxy.java
│ ├── ProxyDisplay.java
│ └── Test.java
├── Readme.txt
├── Singleton
│ ├── classes
│ │ ├── connections.xml
│ │ ├── SingletonA.class
│ │ ├── SingletonB.class
│ │ ├── Singleton.cdi
│ │ ├── SingletonException.class
│ │ ├── SingletonExecption.class
│ │ ├── SubSingletonB.class
│ │ ├── TestA.class
│ │ └── TestB.class
│ ├── Singleton.jpr
│ └── src
│ ├── mypackage
│ │ └── SingletonA.java
│ ├── SingletonB.java
│ ├── SingletonException.java
│ ├── SubSingletonB.java
│ ├── TestA.java
│ └── TestB.java
├── State
│ ├── classes
│ │ ├── connections.xml
│ │ ├── GenerateBill.class
│ │ ├── IShopState.class
│ │ ├── Pay.class
│ │ ├── Shop.class
│ │ ├── ShopContext.class
│ │ ├── ShopState.class
│ │ ├── State.cdi
│ │ └── Test.class
│ ├── src
│ │ ├── GenerateBill.java
│ │ ├── IShopState.java
│ │ ├── Pay.java
│ │ ├── ShopContext.java
│ │ ├── Shop.java
│ │ ├── ShopState.java
│ │ └── Test.java
│ └── State.jpr
├── Strategy
│ ├── classes
│ │ ├── connections.xml
│ │ ├── Context.class
│ │ ├── StrategyA.class
│ │ ├── StrategyB.class
│ │ ├── Strategy.cdi
│ │ ├── Strategy.class
│ │ └── Test.class
│ ├── src
│ │ ├── Context.java
│ │ ├── StrategyA.java
│ │ ├── StrategyB.java
│ │ ├── Strategy.java
│ │ └── Test.java
│ └── Strategy.jpr
├── TemplateMethod
│ ├── classes
│ │ ├── AbstractRead.class
│ │ ├── connections.xml
│ │ ├── ReadFile.class
│ │ ├── ReadHtml.class
│ │ ├── TemplateMethod.cdi
│ │ └── Test.class
│ ├── src
│ │ ├── AbstractRead.java
│ │ ├── ReadFile.java
│ │ ├── ReadHtml.java
│ │ ├── Test.java
│ │ └── test.txt
│ └── TemplateMethod.jpr
└── Visitor
├── classes
│ ├── awtList.class
│ ├── Boss.class
│ ├── bVacationVisitor.class
│ ├── connections.xml
│ ├── Employee.class
│ ├── JawtList.class
│ ├── JListData.class
│ ├── JxFrame$1.class
│ ├── JxFrame.class
│ ├── VacationDisplay.class
│ ├── VacationVisitor.class
│ ├── Visitor.cdi
│ └── Visitor.class
├── src
│ ├── awtList.java
│ ├── Boss.java
│ ├── bVacationVisitor.java
│ ├── Employee.java
│ ├── JawtList.java
│ ├── JxFrame.java
│ ├── VacationDisplay.java
│ ├── VacationVisitor.java
│ └── Visitor.java
└── Visitor.jpr
73 directories, 346 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论