*?抽象出序列。
*?@param?& ltT & gt?序列中的數據類型
*/
界面?序列& ltT & gt?{
/**
*?獲取序列中位置n處的對象。
*
*?@param?n?位置
*?@回歸?位置n處的對象
*/
t?get(int?n);
}
/**
*?等差級數
*/
班級?算術序列?器物?序列& lt整數& gt?{
私人?int?f?=?0,?壹步?=?1;
/**
*?用起始數和等值構造等差數列例題
*
*?@param?首先?起跑順序號碼
*?@param?步長等差
*/
算術序列(int?第壹,?int?步)?{
f?=?第壹;
這壹步?=?步;
}
int?getFirst()?{
回歸?f;
}
作廢?setFirst(int?我)?{
這個. f?=?我;
}
int?getStep()?{
回歸?步;
}
作廢?setStep(int?s)?{
壹步?=?s;
}
公共?整數?get(int?n)?{
如果?(n?& lt?1)?扔?新的?RuntimeException("n?應該?& gt=?1");
//註:這還是為了接口?getFirst()?然後呢。getStep()?到
//子類覆蓋了怎麽辦?getFirst(),?GetStep()仍然可以保持合理的邏輯。
//如果使用成員變量?f?,步?然後子類覆蓋了就不能保持合理的邏輯了。
回歸?getFirst()?+?(n?-?1)?*?get step();
}
}
/**
*?裝飾者
*?@作者?Hardneedl
*/
公共?界面?裝飾者& ltt,V & gt?{
/**
*?裝飾
*?@param?t?要修飾的數據
*?@回歸?裝飾內容
*/
v?裝修(T?t);
}
/**
*?@作者?Hardneedl
*/
公共?班級?CharacterLineDecoratorDemo?{
公共?靜電?作廢?主(字符串...?args)?{
決賽?int?行?=?6;
//建立壹個等差數列的例子。
決賽?算術序列?算術序列?=?新的?算術序列(行數,-1);
//施工圖的實施者
裝潢師?裝潢師?=?新的?裝飾者& ltInteger,CharSequence & gt()?{
私人?決賽?StringBuilder?stringBuilder?=?新的?StringBuilder();
公共?CharSequence?裝修(整數?排)?{
stringBuilder.delete(0,stringbuilder . length());
int?答?=?arithmetic sequence . get(row);
for(int?我?=?0;?我?& lt?a;?i++)
stringbuilder . append(' # ');
回歸?stringbuilder . tostring();
}
};
為了什麽?(int?我?=?1;?我?& lt=?行;?i++)?{
system . out . println(decorator . decorate(I));
}
}
}