装饰抽象类

//显示的抽象类
public abstract class DisPlay {
public abstract int getColumns(); //获取横向字符数
public abstract int getRows(); //获取纵向字符数
public abstract String getRowText(int row); //获取第w行的字符串
public final void show(){
for(int i=0;i<getRows();i++){
System.out.println(getRowText(i));
}
}
}
//字符串继承抽象类
public class StringDisplay extends DisPlay {
private String string;
public StringDisplay(String string){
this.string=string;
}

@Override
public int getColumns() {
    return string.getBytes().length;
}

@Override
public int getRows() {
    return 1;
}

@Override
public String getRowText(int row) {
    if(row==0){
        return string;
    }
    return null;
}

}
//边框继承抽象类
public abstract class Border extends DisPlay {
protected DisPlay disPlay;
protected Border(DisPlay disPlay){
this.disPlay=disPlay;
}
}
//继承边框类
public class SideBorder extends Border {
private char boderChar;
protected SideBorder(DisPlay disPlay,char ch) {
super(disPlay);
this.boderChar=ch;
}

public SideBorder(FullBorder 你好世界) {
    super();
}

@Override
public int getColumns() {
    return 1+disPlay.getColumns()+1;
}
@Override
public int getRows() {
    return disPlay.getRows();
}
@Override
public String getRowText(int row) {
    return boderChar+disPlay.getRowText(row)+boderChar;
}

}
//全部的边框类
public class FullBorder extends Border {
protected FullBorder(DisPlay disPlay) {
super(disPlay);
}
@Override
public int getColumns() {
return 1 +disPlay.getColumns()+ 1;
}

@Override
public int getRows() {
    return 1 +disPlay.getRows()+ 1;
}

@Override
public String getRowText(int row) {
    if(row==0){
        return "+"+makeLine('-',disPlay.getColumns())+"+";

    }
    else if (row==disPlay.getRows()+1){
        return "+"+makeLine('-',disPlay.getColumns())+"+";
    }
    else{
        return "|"+disPlay.getRowText(row-1)+"|";
    }
}

private String makeLine(char ch, int count) {
    StringBuffer buf=new StringBuffer();
    for(int i=0;i<count;i++){
        buf.append(ch);

    }
    return  buf.toString();
}

}
//测试类
public class Main {
public static void main(String[] args){
DisPlay b1=new StringDisplay(“Hello,world”);
DisPlay b2=new SideBorder(b1,’#’);
DisPlay b3=new FullBorder(b2);
b1.show();
b2.show();
b3.show();
DisPlay b4=new SideBorder(
new FullBorder(
new FullBorder(
new SideBorder(
new FullBorder(
new StringDisplay(“你好世界”))));
b4.show();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值