原型模式(Prototype)(创建型模式)
来源:互联网 发布:美国生活水平知乎 编辑:程序博客网 时间:2024/06/05 16:46
参考文档:
1.设计模式-可复用面向对象软件的基础
2.http://www.cnblogs.com/itTeacher/archive/2012/12/02/2797857.html(Java设计模式四: 原型模式(Prototype Pattern))
原型模式(Prototype)(创建型模式)
理论方面的知识可以参考参考文档;
看看prototype的格式:
代码实现:
MazePrototypeFactory.java:
package com.rick.designpattern.prototype;/** * Created by MyPC on 2017/6/22. */public class MazePrototypeFactory extends MazeFactory { private Maze _prototypeMaze; private Wall _prototypeWall; private Room _prototypeRoom; private Door _prototypeDoor; public MazePrototypeFactory(Maze maze, Wall wall, Room room, Door door) { this._prototypeMaze = maze; this._prototypeWall = wall; this._prototypeRoom = room; this._prototypeDoor = door; } public Maze makeMaxe() { return new Maze(); } public Wall makeWall() { return _prototypeWall.clone(); } public Room makeRoom(int n) { return new Room(n); } public Door makeDoor(Room r1, Room r2) { Door door = _prototypeDoor.clone(); door.initialize(r1, r2); return door; }}Wall.java:
package com.rick.designpattern.prototype;/** * 墙 * <p> * Created by MyPC on 2017/6/20. */public class Wall { public Wall() { } public Wall(Wall other) { } public Wall clone() { return new Wall(this); }}Door.java:
package com.rick.designpattern.prototype;/** * 门 * <p> * Created by MyPC on 2017/6/20. */public class Door { private Room r1, r2; public Door() { } public Door(Door other) { r1 = other.r1; r2 = other.r2; } public void initialize(Room r1, Room r2) { this.r1 = r1; this.r2 = r2; } public Door clone() { return new Door(this); } public Door(Room r1, Room r2) { this.r1 = r1; this.r2 = r2; }}BombedWall.java:
package com.rick.designpattern.prototype;/** * Created by MyPC on 2017/6/20. */public class BombedWall extends Wall { private boolean _bomb; public BombedWall() { } public BombedWall(BombedWall other) { _bomb = other._bomb; } public BombedWall clone() { return new BombedWall(this); }}Client.java:
package com.rick.designpattern.prototype;/** * Created by MyPC on 2017/6/20. */public class Client { public static void main(String[] args) { MazeGame mazeGame = new MazeGame(); MazePrototypeFactory mazePrototypeFactory = new MazePrototypeFactory(new Maze(), new Wall(), new Room(1), new Door()); mazeGame.createMaze(mazePrototypeFactory); MazePrototypeFactory mazePrototypeFactory2 = new MazePrototypeFactory(new Maze(), new BombedWall(), new RoomWithABomb(1), new Door()); mazeGame.createMaze(mazePrototypeFactory2); }}
阅读全文
0 0
- 创建型模式-----原型模式(Prototype)
- Prototype 原型(创建型模式)
- 创建型模式:Prototype(原型)
- Prototype 原型(创建型模式) 笔记
- java原型模式(Prototype)-创建型
- 四、原型模式Prototype(创建型)
- 创建型:原型模式(Prototype)
- 设计模式:创建型模式:原型模式(prototype pattern)
- 设计模式(四)原型模式Prototype(创建型)
- 设计模式(四)原型模式Prototype(创建型)
- 设计模式(四)原型模式Prototype(创建型)
- 设计模式(四)原型模式(Prototype)-创建型
- 设计模式(四)原型模式Prototype(创建型)
- 设计模式(2)-创建型-原型模式(Prototype)
- 原型模式(Prototype)(创建型模式)
- 创建型模式之原型模式(ProtoType)
- 设计模式--原型模式Prototype(创建型)
- 创建型模式4:原型模式(Prototype Pattern)
- Android 实现两次点击返回键 提示退出
- 207. Course Schedule
- Vue SPA + Nodejs项目实战
- bugku Reverse Easy_vb wirteup
- hibernate查询结果映射到实体和map的方法
- 原型模式(Prototype)(创建型模式)
- Jquery.flotX轴日期对应不上
- gitclone 报错端口链接不上
- 字符串常用方法
- 初识C++
- SM4 CBC模式加密的C语言实现
- 浅谈软件测试
- angular2报错记录-routerLink
- linux回到上次目录与历史命令查找快捷方式