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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

java设计模式5--原型模式(Prototype)

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

本文地址:http://www.cnblogs.com/archimedes/p/java-prototype-pattern.html,轉(zhuǎn)載請注明源地址。

原型模式

用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。

概述

原型模式是從一個對象出發(fā)得到一個和自己有相同狀態(tài)的新對象的成熟模式,該模式的關(guān)鍵是將一個對象定義為原型,并為其提供復(fù)制自己的方法。?

java.lang.Object類的clone方法

參見《java中的深淺克隆》

適用性

1.當(dāng)一個系統(tǒng)應(yīng)該獨立于它的產(chǎn)品創(chuàng)建、構(gòu)成和表示時。

2.當(dāng)要實例化的類是在運行時刻指定時,例如,通過動態(tài)裝載。

3.為了避免創(chuàng)建一個與產(chǎn)品類層次平行的工廠類層次時。

4.當(dāng)一個類的實例只能有幾個不同狀態(tài)組合中的一種時。 建立相應(yīng)數(shù)目的原型并克隆它們可能比每次用合適的狀態(tài)手工實例化該類更方便一些。

參與者

1. Prototype 聲明一個克隆自身的接口。

2. ConcretePrototype 實現(xiàn)一個克隆自身的操作。

3. Client 讓一個原型克隆自身從而創(chuàng)建一個新的對象。

原型模式的結(jié)構(gòu)與使用

模式的結(jié)構(gòu)中包括兩種角色:

?抽象原型(Prototype)

?具體原型(Concrete Prototype)?

模式的UML類圖:

實戰(zhàn)部分

例1】:實現(xiàn)一個克隆接口,然后實現(xiàn)一個克隆自身的操作并加以應(yīng)用

1.抽象原型(Prototype):?Prototype.java

public interface Prototype {public Object cloneMe() throws CloneNotSupportedException; }

2.具體原型(Concrete Prototype)_1:?Cubic.java

public class Cubic implements Prototype, Cloneable{double length, width, height;Cubic(double a, double b, double c){length = a;width = b;height = c;}public Object cloneMe() throws CloneNotSupportedException{Cubic object = (Cubic)clone(); return object;} }

2.具體原型(Concrete Prototype)_2 :?Goat.java

import java.io.*; public class Goat implements Prototype,Serializable{StringBuffer color;public void setColor(StringBuffer c){color = c;}public StringBuffer getColor(){return color;}public Object cloneMe() throws CloneNotSupportedException{ Object object = null;try{ ByteArrayOutputStream outOne = new ByteArrayOutputStream();ObjectOutputStream outTwo = new ObjectOutputStream(outOne);outTwo.writeObject(this); ByteArrayInputStream inOne=new ByteArrayInputStream(outOne.toByteArray());ObjectInputStream inTwo = new ObjectInputStream(inOne);object=inTwo.readObject(); }catch(Exception event){System.out.println(event);}return object;} }

3.應(yīng)用?Application.java

public class Application {public static void main(String[] args) {Cubic cubic = new Cubic(12, 20, 66);System.out.println("cubic的長、寬和高: ");System.out.println(cubic.length + "," + cubic.width + "," + cubic.height);try {Cubic cubicCopy = (Cubic)cubic.cloneMe();System.out.println("cubicCopy的長、寬和高: ");System.out.println(cubicCopy.length + "," + cubicCopy.width + "," + cubicCopy.height);} catch(CloneNotSupportedException ex){}Goat goat = new Goat();goat.setColor(new StringBuffer("白色的山羊"));System.out.println("goat是" + goat.getColor());try {Goat goatCopy = (Goat)goat.cloneMe();System.out.println("goatCopy是" + goatCopy.getColor());System.out.println("goatCopy將自己的顏色改變成黑色");goatCopy.setColor(new StringBuffer("黑顏色的山羊"));System.out.println("goat仍然是"+ goat.getColor());System.out.println("goatCopy是"+ goatCopy.getColor());} catch(CloneNotSupportedException ex){}} }

原型模式的優(yōu)點?

?當(dāng)創(chuàng)建類的新實例的代價更大時,使用原型模式復(fù)制一個已有的實例可以提高創(chuàng)建新實例的效率。

?可以動態(tài)地保存當(dāng)前對象的狀態(tài)。在運行時刻,可以隨時使用對象流保存當(dāng)前對象的一個復(fù)制品。

您還可能感興趣:

java設(shè)計模式系列:

java設(shè)計模式4--建造者模式(Builder)

java設(shè)計模式3--單例模式(Singleton)

java設(shè)計模式2--抽象工廠模式(Abstract Factory)

java設(shè)計模式1--工廠方法模式(Factory Method)?

java設(shè)計模式0--設(shè)計模式簡介

總結(jié)

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

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

主站蜘蛛池模板: 国产最新网址 | 成人h动漫精品一区二区无码 | 日韩成人免费电影 | 欧美综合成人 | 射进来av影视 | 欧美视频一二区 | 麻豆网站免费观看 | 制服丝袜av一区二区三区下载 | 91麻豆映画传媒 | www.国产视频.com | 一道本在线视频 | 久久精品国产亚洲AV无码男同 | 国产精品av一区 | 久久视频热 | 综合久| 无码人妻久久一区二区三区 | 另类欧美尿交 | 伊人久久青青草 | 亚洲精品国产一区 | 隔壁人妻偷人bd中字 | 日韩精品成人一区 | 国产美女被遭强高潮免费网站 | 男人的天堂视频在线观看 | 阿v天堂网 | 中文字幕精品久久久 | 免费在线黄色网 | 亚洲欧美成人综合 | 无码人妻aⅴ一区二区三区日本 | 丰满少妇影院 | 老熟女毛茸茸浓毛 | 中文字幕在线精品 | 在线观看免费av网站 | 欧美日韩八区 | 国产性av | 中文字幕不卡 | 黄色在线视频网址 | 人与动物av | 欧美第一夜 | 欧美黄色免费视频 | 性奶老妇 视频 | 亚洲情网| 国产精品久久久久久久久岛 | 欧美图片一区二区三区 | 在线免费看黄 | 夜夜爽夜夜叫夜夜高潮漏水 | 777777av| 小萝莉末成年一区二区 | 精品日本一区二区三区在线观看 | 免费成人福利视频 | 黄色欧美一级片 | 久草成人在线视频 | 根深蒂固在线观看 | 日韩91av| 国产亚洲成av人在线观看导航 | 国产素人在线观看 | 在线性视频 | 91国产免费看 | 麻豆影视av | 久一区二区三区 | 香蕉小视频 | 精品不卡视频 | 国产探花一区 | 国产色无码精品视频 | 男女午夜激情视频 | 精彩毛片 | 手机看片国产日韩 | 丁香花五月天 | 亚洲欧美日韩色 | 午夜性色| 黑人巨大精品欧美一区二区 | 日本不卡一区二区三区视频 | 欧美男女视频 | 欧美一区二区二区 | 亚洲一区色 | 香蕉网站在线观看 | 看av网站| 男人激烈吮乳吃奶爽文 | 日本高清不卡一区 | 一区二区三区观看 | 日韩电影中文字幕 | 调教撅屁股啪调教打臀缝av | 九九av| 国产免费av片在线 | 天天干天天操天天射 | 欧美午夜精品一区二区三区电影 | 18岁免费观看电视连续剧 | 国产高清在线免费观看 | 午夜极品视频 | 欧美激情校园春色 | 日韩怡春院 | 日本一区视频在线播放 | www亚洲成人 | 黑人黄色大片 | 中文字幕久久久久久久 | 成人网页 | 超碰激情 | 亚洲图区欧美 | 国产一区二区视频免费在线观看 | 国产午夜福利精品 |