国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

設(shè)計(jì)模式-原型模式

2019-11-10 17:36:26
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

原型模式又稱對(duì)象復(fù)制模式,淺拷貝的時(shí)候,一般采用Object類的clone()方法.

給出如下場(chǎng)景: 人做某種運(yùn)動(dòng).

1.建立抽象類 人

2.建立抽象類 運(yùn)動(dòng)

3.建立場(chǎng)景管理類,通過(guò)管理類實(shí)現(xiàn)場(chǎng)景

java代碼如下:

package com.liu.pattern6;public class PRototype {	public static void main(String[] args) {		// TODO Auto-generated method stub		Manager.play(new Man("張三","15"), new Run("跑步"));	}	}class Manager{		public static void play(Person p,Activity a){				Person p2 = (Person) p.clone();		Activity a2 = (Activity)a.clone();				System.out.println(p2.toString() + a2.toString());			}}abstract class Person implements Cloneable {		public Person(String name,String age){		this.name =name;		this.age = age;	}		private String name;	private String age;	public String getName() {		return name;	}		public void setName(String name) {		this.name = name;	}		public String getAge() {		return age;	}		public void setAge(String age) {		this.age = age;	}		public Object clone(){		try {			return super.clone();		} catch (CloneNotSupportedException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		return null;	}		public abstract String toString();}class Man extends Person{	public Man(String name, String age) {		super(name, age);		// TODO Auto-generated constructor stub	}	@Override	public String toString() {		// TODO Auto-generated method stub		return super.getName()+"("+super.getAge()+")";	}	}abstract class Activity implements Cloneable{		public Activity(String name){		this.name = name;	}		private String name;	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}		public Object clone(){		try {			return super.clone();		} catch (CloneNotSupportedException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		return null;	}		public abstract String toString();}class Run extends Activity{	public Run(String name) {		super(name);		// TODO Auto-generated constructor stub	}	@Override	public String toString() {		// TODO Auto-generated method stub		return "在進(jìn)行"+super.getName()+"的運(yùn)動(dòng)";	}	}

 

c#代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace com.liu.pattern6{    class Prototype    {        static void Main(string[] args)        {            Manager.play(new Man("張三", "15"), new Run("跑步"));        }    }    class Manager    {        public static void play(Person p, Activity a){				Person p2 = (Person) p.clone();		Activity a2 = (Activity)a.clone();				System.Console.WriteLine(p2.toString() + a2.toString());        System.Console.ReadKey();			    }    }    abstract class Person {	        private String _name;        private String _age;        public String Name{            set{                _name = value;             }            get{                return _name;            }        }        public String Age{            set{                _age = value;             }            get{                return _age;            }        }	    public Person(String name,String age){		    Name =name;		    Age = age;	    }		    public Object clone(){            return base.MemberwiseClone();	    }		    public abstract String toString();    }    class Man : Person{	    public Man(String name, String age):base(name,age) {	    }	    public override String toString() {		    // TODO Auto-generated method stub		    return base.Name+"("+base.Age+")";	    }	    }    abstract class Activity{	    	    public Activity(String name){		    Name = name;	    }		    private String _name;        public String Name {            set { _name = value; }            get { return _name; }        }		    public Object clone(){            return base.MemberwiseClone();	    }		    public abstract String toString();    }    class Run : Activity{	    public Run(String name):base(name) {		    // TODO Auto-generated constructor stub	    }        public override String toString()        {		    // TODO Auto-generated method stub            return "在進(jìn)行" + base.Name+ "的運(yùn)動(dòng)";	    }	    }}

 

 


上一篇:裝飾者模式

下一篇:傳球游戲

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 孝义市| 连江县| 平乡县| 和顺县| 永平县| 涞源县| 宁夏| 垣曲县| 来宾市| 吉安县| 白玉县| 科技| 铁岭市| 绥宁县| 浪卡子县| 高平市| 乌拉特前旗| 教育| 浦北县| 油尖旺区| 红桥区| 灵寿县| 敦煌市| 三亚市| 塔河县| 南部县| 基隆市| 乐亭县| 乳山市| 桑日县| 临西县| 福贡县| 谷城县| 高台县| 库尔勒市| 巫山县| 桦南县| 黑龙江省| 扶风县| 龙岩市| 天津市|