原型模式-Prototype(Java实现)
2018-06-18 01:22:36来源:未知 阅读 ()
原型模式-Prototype
通过复制(克隆、拷贝)一个指定类型的对象来创建更多同类型的对象.
Product接口
我们将使用原型模式来创建对象, 而这些对象, 就被抽象为Product
Product还提供了复制方法createClone(). 继承了Cloneable接口.
注意: 这里的createClone()方法并不是继承于Cloneable, Cloneable里面并没有声明任何方法, Cloneable只是起标记作用的一个接口.
public interface Product extends Cloneable { void use(String str); Product createClone(); }
UnderlinePen类
这是Product接口的实现类, 下划线类.
向特定的下划线类传入一个字符串后, 他会打印出该字符串和下划线
public class UnderLinePen implements Product { /** * 下划线字符 */ private char underLineChar; public UnderLinePen(char ch) { this.underLineChar = ch; } /** * 传入str后, 会打印str和下划线 */ @Override public void use(String str) { System.out.println("\"" + str + "\""); System.out.print(" "); for (int i = 0; i < str.getBytes().length; i++) { System.out.print(underLineChar); } System.out.println(""); } /** * 返回一个克隆 */ @Override public Product createClone() { try { return (Product) this.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); return null; } } }
UnderLinePenManager类
用于统一管理产品, 他来负责注册和克隆
public class UnderLinePenManager { /** * 各种笔注册到这里, 统一管理 */ private static final HashMap<String, Product> PENS = new HashMap<>(); /** * 注册笔 */ public static void register(String name, Product pen) { PENS.put(name, pen); } /** * 从注册中心HashMap以name为key取出来一只笔, 然后克隆一个新的来返回 */ public static Product createPen(String name) { return PENS.get(name).createClone(); } }
Main
该类用于运行测试
public class Main { static { /** * 将各种笔注册到Manager来统一管理 */ UnderLinePenManager.register("wave-line" , new UnderLinePen('~')); UnderLinePenManager.register("bee-line" , new UnderLinePen('_')); UnderLinePenManager.register("dotted-line", new UnderLinePen('.')); } public static void main(String[] args) { // 每次需要某种笔的时候, 根据现有的笔来进行克隆一份就好了 // 取出一只波浪线的笔 Product anotherPen1 = UnderLinePenManager.createPen("wave-line"); // 用波浪线的笔来打印 anotherPen1.use("hello world"); } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:[原创]Java生成Word文档
下一篇:巨人大哥谈如何开好周例会?
- 设计模式-委派/策略模式 2020-06-09
- 深入理解:设计模式中的七大设计原则 2020-06-07
- 设计模式---类之间的关系知多少 2020-06-07
- 你与面试官所了解的单例模式并不一样! 2020-06-06
- 高手眼中的观察者模式有什么不一样 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash