博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java设计模式_原型模式
阅读量:5877 次
发布时间:2019-06-19

本文共 2708 字,大约阅读时间需要 9 分钟。

hot3.png

一,简单形式的原型模式

package com.wangbiao.test_first;/** *  * 简单形式的原型模式 * @author WangBiao * */public abstract class CommonInterface {		 public  abstract CommonInterface clone();	}//第一个真实类class Class_first extends  CommonInterface{	@Override	public CommonInterface clone() {		Class_first c=new Class_first();		return c;	}	}//第二个真实类class Class_second extends  CommonInterface{	@Override	public CommonInterface clone() {		Class_second c=new Class_second();		return c;	}	}class Main_Test{		public static void main(String[] args) {		CommonInterface common=new Class_second();		CommonInterface common_clone=common.clone();			}}

二,登记形式的原型模式

package com.wangbiao.test_second;import java.util.HashMap;/** *  * 登记类型的原型模式 *  * @author WangBiao *  */public abstract class CommonInterface {	private String name;	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public abstract CommonInterface clone();}// 第一个真实类class Class_first extends CommonInterface {	@Override	public CommonInterface clone() {		Class_first c = new Class_first();		c.setName(this.getName());		return c;	}}// 第二个真实类class Class_second extends CommonInterface {	@Override	public CommonInterface clone() {		Class_second c = new Class_second();		c.setName(this.getName());		return c;	}}class ProtoTypeManagement {	private static HashMap
 map = new HashMap
(); private ProtoTypeManagement() { } public synchronized static void addProtoType(String name, CommonInterface c) { map.put(name, c); } public synchronized static void removeProtoType(String name) { map.remove(name); } public synchronized static CommonInterface getProtoType(String name) throws Exception { if (!map.containsKey(name)) { // 报异常或者其他操作 System.out.println("没有这个原型模型"); throw new Exception("没有这个原型模型"); } CommonInterface portoType = map.get(name); return portoType; }}class Main_Test { public static void main(String[] args) throws Exception { CommonInterface common = new Class_second(); common.setName("test"); System.out.println(common.getName()); ProtoTypeManagement.addProtoType("P1", common); CommonInterface common_clone_first = ProtoTypeManagement.getProtoType("P1").clone(); System.out.println(common_clone_first.getName()); //动态改变原型对象 CommonInterface temp = new Class_second(); temp.setName("test_again"); ProtoTypeManagement.addProtoType("P1", temp); CommonInterface common_clone_second=ProtoTypeManagement.getProtoType("P1").clone(); System.out.println(common_clone_second.getName()); //删除圆形对象 ProtoTypeManagement.removeProtoType("P1"); CommonInterface common_clone_third=ProtoTypeManagement.getProtoType("P1").clone(); }}

转载于:https://my.oschina.net/u/617909/blog/119114

你可能感兴趣的文章
oracle11g 数据库导出报“ EXP-00003:
查看>>
201521123009 《Java程序设计》第11周学习总结
查看>>
可解释的机器学习
查看>>
Python3之多线程学习
查看>>
aspx页面@Page指令解析
查看>>
POJ 2002
查看>>
MVC和MTV结构分析
查看>>
(转)微信网页扫码登录的实现
查看>>
SpringBoot2.x配置Cors跨域
查看>>
用AJAX实现页面登陆以及注册用户名验证
查看>>
mariadb启动报错:[ERROR] Can't start server : Bind on unix socket: Permission denied
查看>>
nginx的信号量
查看>>
30分钟新手git教程
查看>>
passwd的使用
查看>>
最爱的小工具,谁用谁知道!
查看>>
EntityFramework之一对一关系(二)
查看>>
获取表的信息,包含字段的描述
查看>>
Mybatis学习
查看>>
C# 的关键字系列 (2 of n)
查看>>
runtime第三部分方法和消息
查看>>