日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【设计模式】—— 原型模式Prototype

發(fā)布時間:2025/7/14 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计模式】—— 原型模式Prototype 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  前言:【模式總覽】——————————by xingoo

  模式意圖

  由于有些時候,需要在運(yùn)行時指定對象時哪個類的實例,此時用工廠模式就有些力不從心了。通過原型模式就可以通過拷貝函數(shù)clone一個原有的對象,給現(xiàn)在的對象使用,從而創(chuàng)建更多的同類型的對象。

  模式結(jié)構(gòu)

  【簡單原型模式】用于原型的版本不多的時候

  【登記模式的原型模式】如果原型的實現(xiàn)很多種版本,那么通過一個登記管理類,可以方便的實現(xiàn)原型的管理。

  Prototype 原型接口,定義原型的結(jié)構(gòu)。

  ConcretePrototype 原型的具體實現(xiàn)。

  Client 使用類,創(chuàng)建一個原型,創(chuàng)建一個引用,可以隨意指定要引用的實現(xiàn)類。

  PrototypeManager 原型的管理器,里面含有一個Map,用來保存原型的實例對象。

  使用場景

  1 當(dāng)需要在運(yùn)行時指定對象的實現(xiàn)類時。

  2 當(dāng)一個類的實例只能有集中狀態(tài)的一種時。(這個沒怎么理解)

  代碼結(jié)構(gòu)

  【簡單原型模式

1 package com.xingoo.test; 2 3 interface Prototype{ 4 public Object clone(); 5 } 6 class ConcretePrototype1 implements Prototype{ 7 public Object clone() { 8 Prototype prototype = new ConcretePrototype1(); 9 return prototype; 10 } 11 } 12 class ConcretePrototype2 implements Prototype{ 13 public Object clone(){ 14 Prototype prototype = new ConcretePrototype2(); 15 return prototype; 16 } 17 } 18 public class Client{ 19 public static void main(String[] args){ 20 Prototype p1 = new ConcretePrototype1(); 21 System.out.println("p1 "+p1); 22 23 Prototype p2 = new ConcretePrototype2(); 24 System.out.println("p2 "+p2); 25 26 Prototype prototype = (Prototype)p1.clone(); 27 System.out.println("prototype "+prototype); 28 prototype = (Prototype)p2.clone(); 29 System.out.println("prototype "+prototype); 30 } 31 }

  運(yùn)行結(jié)果

p1 com.xingoo.test.ConcretePrototype1@1fb8ee3 p2 com.xingoo.test.ConcretePrototype2@14318bb prototype com.xingoo.test.ConcretePrototype1@ca0b6 prototype com.xingoo.test.ConcretePrototype2@10b30a7

  【登記模式的原型模式

1 package com.xingoo.test1; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 /** 6 * 原型的接口 7 * @author xingoo 8 */ 9 interface Prototype{ 10 public Prototype clone(); 11 } 12 /** 13 * 具體的實現(xiàn)類1 14 * @author xingoo 15 * 16 */ 17 class ConcretePrototype1 implements Prototype{ 18 public Prototype clone() { 19 Prototype prototype = new ConcretePrototype1(); 20 return prototype; 21 } 22 } 23 /** 24 * 具體的實現(xiàn)類2 25 * @author xingoo 26 * 27 */ 28 class ConcretePrototype2 implements Prototype{ 29 public Prototype clone(){ 30 Prototype prototype = new ConcretePrototype2(); 31 return prototype; 32 } 33 } 34 /** 35 * 原型的管理器 36 * @author xingoo 37 * 38 */ 39 class PrototypeManager{ 40 /** 41 * 用于保存原型的實例 42 */ 43 private static Map<String,Prototype> map = new HashMap<String,Prototype>(); 44 /** 45 * 靜態(tài)方法創(chuàng)建構(gòu)造函數(shù),避免外部類調(diào)用 46 */ 47 private PrototypeManager(){ 48 } 49 /** 50 * 添加原型 51 * @param protoName 原型的名字 52 * @param prototype 原型的實例 53 */ 54 public synchronized static void setPrototype(String protoName,Prototype prototype){ 55 map.put(protoName, prototype); 56 } 57 /** 58 * 獲得原型 59 * @param protoName 原型的名字 60 * @return 返回原型的實例 61 * @throws Exception 如果找不到,則跑出找不到異常 62 */ 63 public synchronized static Prototype getPrototype(String protoName) throws Exception{ 64 Prototype prototype = map.get(protoName); 65 if(prototype == null){ 66 throw new Exception("no "+protoName+" in Manager"); 67 } 68 return prototype; 69 } 70 /** 71 * 從管理器中刪除原型的實例 72 * @param protoName 原型的名字 73 */ 74 public synchronized static void removedPrototype(String protoName){ 75 map.remove(protoName); 76 } 77 } 78 /** 79 * 原型的使用者 80 * @author xingoo 81 * 82 */ 83 public class Client { 84 public static void main(String[] args){ 85 try{ 86 /** 87 * 創(chuàng)建一種原型的實現(xiàn),放入管理器中 88 */ 89 Prototype p1 = new ConcretePrototype1(); 90 System.out.println("p1 "+p1); 91 PrototypeManager.setPrototype("MyPrototype", p1); 92 93 Prototype prototype1 = PrototypeManager.getPrototype("MyPrototype").clone(); 94 System.out.println("prototype1 "+prototype1); 95 /** 96 * 切換成另一種原型的實現(xiàn),修改管理器中的對象 97 */ 98 Prototype p2 = new ConcretePrototype1(); 99 System.out.println("p2 "+p2); 100 PrototypeManager.setPrototype("p1", p2); 101 102 Prototype prototype2 = PrototypeManager.getPrototype("MyPrototype").clone(); 103 System.out.println("prototype2 "+prototype2); 104 /** 105 * 注銷該原型實現(xiàn),對象使用后,觀察情況 106 */ 107 PrototypeManager.removedPrototype("MyPrototype"); 108 109 Prototype prototype3 = PrototypeManager.getPrototype("MyPrototype").clone(); 110 System.out.println("prototype3 "+prototype3); 111 112 }catch(Exception e){ 113 e.printStackTrace(); 114 } 115 } 116 }

  運(yùn)行結(jié)果

p1 com.xingoo.test1.ConcretePrototype1@116ab4e prototype1 com.xingoo.test1.ConcretePrototype1@129f3b5 p2 com.xingoo.test1.ConcretePrototype1@13f3045 prototype2 com.xingoo.test1.ConcretePrototype1@17a29a1 java.lang.Exception: no MyPrototype in Managerat com.xingoo.test1.PrototypeManager.getPrototype(Client.java:66)at com.xingoo.test1.Client.main(Client.java:109)

?

轉(zhuǎn)載于:https://www.cnblogs.com/xing901022/p/4050910.html

總結(jié)

以上是生活随笔為你收集整理的【设计模式】—— 原型模式Prototype的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品一区二区 | 国产精品天美传媒沈樵 | 亚洲一区二区在线免费观看 | jizz免费| 欧美精品免费一区二区三区 | 免费看欧美大片 | 国产精品自产拍高潮在线观看 | 久久精品视频中文字幕 | 日韩有码中文字幕在线观看 | 亚洲一区不卡在线 | 女av在线 | 午夜激情影视 | 日本午夜网 | 亚洲石原莉奈一区二区在线观看 | 国内成人精品 | 亚洲专区在线 | 亚洲精品9999 | 国产第一页在线 | 国产精品一区一区三区 | 亚洲精品一区二区三区精华液 | 久久久99国产精品免费 | 精品人妻一区二区三区麻豆91 | 人妖天堂狠狠ts人妖天堂狠狠 | 国模在线视频 | 黄色免费网页 | 国产激情a| 日韩精品免费观看 | 国产美女喷水视频 | videos亚洲| 成人区人妻精品一熟女 | 亚洲综合久久网 | 日婷婷| 锕锕锕锕锕锕锕锕 | 日韩在线视频网 | 欧美性猛交xxxx乱大交 | 国产成人综合网 | 国产一区二区三区影视 | 91嫩草欧美久久久九九九 | 女人扒开屁股让男人桶 | 99久久久久久 | 欧美乱大交xxxxx春色视频 | 韩国19主播内部福利vip | 天天操,夜夜操 | 污导航在线观看 | 欧美黑人巨大xxx极品 | 少妇做爰免费理伦电影 | 欧美精品视 | 女人黄色片 | 日本三级韩国三级三级a级按摩 | av日韩av| 久久国产美女视频 | 欧美天天视频 | 国产二级一片内射视频播放 | 黑人玩弄人妻一区二区绿帽子 | 黄色片高清 | 欧洲成人综合 | 波多野结衣先锋影音 | 自拍偷拍日韩 | 黄色国产片 | 牛夜精品久久久久久久99黑人 | 国产黄色小说 | 91亚色视频在线观看 | 日韩久久免费视频 | 无限国产资源 | 精品96久久久久久中文字幕无 | 久久精选视频 | 91精品国产乱码在线观看 | 黑帮大佬和我的365日第二部 | 蜜臀一区 | 麻豆视频免费网站 | 久久高清精品 | 午夜日韩av | 亚洲欧美日韩精品久久亚洲区 | 日本人体一区 | wwwxxx亚洲| 欧美国产一二三区 | 欧美性生活 | 激情插插| 亚洲AV无码片久久精品 | 免费看黄在线 | 中文字幕精品一区二区三区视频 | 国产三级在线观看完整版 | av黄色网 | 久久免费少妇高潮99精品 | 四虎黄色片 | 爱欲av | 加勒比一区二区三区 | 亚洲aa视频 | 色婷婷av一区二区三区四区 | free性护士vidos猛交 | 日日日人人人 | 免费av导航 | 看黄色的网站 | www..com黄色 | 国产精品久久久久久久久久辛辛 | 日韩视频免费在线播放 | 亚洲一区图片 | 国产精品久久久久久白浆 | 少妇闺蜜换浪荡h肉辣文 |