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

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

使用子類型化優(yōu)化標(biāo)簽類

2019-11-06 07:24:39
字體:
供稿:網(wǎng)友
標(biāo)簽類:其中有許多樣板代碼,包括枚舉聲明,標(biāo)簽域和條件語句如果要給它添加風(fēng)格,除了有權(quán)限修改源碼之外,你還得給每個(gè)條件語句都添加一個(gè)條件,否則就會(huì)在運(yùn)行時(shí)失敗標(biāo)簽類過于冗長,容易出錯(cuò),并且效率低下我們可以用類層次類代替標(biāo)簽類 – 子類型化public class Figure { enum Shape{RECTANGLE,CIRCLE}; final Shape shape; double width; double length; double radius; Figure(Double radius){ shape = Shape.CIRCLE; this.radius = radius; } Figure(double width,double length){ shape = Shape.RECTANGLE; this.width = width; this.length = length; } double area(){ switch(shape){ case RECTANGLE: return width*length; case CIRCLE: return Math.PI*(radius*radius); default: return 0; } }}

如何將一個(gè)標(biāo)簽類優(yōu)化為類層次 – 子類型化 1.為標(biāo)簽類中的每個(gè)方法都定義一個(gè)包含抽象方法的抽象類,這些方法的行為都依賴于標(biāo)簽值 2.為每種原始標(biāo)簽類都定義根類的具體子類 Figure類對(duì)應(yīng)的類層次

/** * 子類型化:定義能表示多種風(fēng)格對(duì)象的單個(gè)數(shù)據(jù)類型,標(biāo)簽類是對(duì)其的一種效仿 */public abstract class Figure { abstract double area();}public class Circle extends Figure { final double radius; Circle(double radius) { this.radius = radius; } @Override double area() { return Math.PI * (radius * radius); }}public class Rectangle extends Figure { final double length; final double width; Rectangle(double length, double width) { this.length = length; this.width = width; } @Override double area() { return length * width; }}

最后擴(kuò)展:類層次可以用來反映類型之間本質(zhì)上的層次關(guān)系,有助于靈活性,并且進(jìn)行更好的編譯檢查 如:正方形本質(zhì)上也是一種矩形,在類中如何反應(yīng)?

public class Square extends Rectangle {// Square(double length, double width) {// super(length, width);// // TODO Auto-generated constructor stub// } Square(double side) { super(side, side); }}

總結(jié):標(biāo)簽類很少有適用的時(shí)候.當(dāng)你想要編寫一個(gè)包含顯示標(biāo)簽域的類時(shí),應(yīng)該考慮一下,這個(gè)標(biāo)簽是否可以被取消,這個(gè)類是否可以用類層次來代替.當(dāng)你遇到一個(gè)包含標(biāo)簽域的現(xiàn)有類時(shí),就要考慮它重構(gòu)到一個(gè)層次結(jié)構(gòu)中去.


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 辽宁省| 成都市| 罗平县| 乌鲁木齐市| 淮南市| 满洲里市| 达日县| 隆林| 平山县| 镇安县| 祥云县| 景德镇市| 滁州市| 班玛县| 南昌市| 田林县| 玛多县| 浏阳市| 策勒县| 大洼县| 南平市| 南召县| 乡城县| 英超| 大港区| 杭锦后旗| 八宿县| 凤阳县| 涿鹿县| 疏附县| 鹤壁市| 武乡县| 车险| 新宁县| 巴林左旗| 襄垣县| 鹤峰县| 教育| 都匀市| 会理县| 东平县|