5

次のような計算があるという点で、アプリケーションを作成する必要があります。

  1. 基本料金
  2. 登録料; 登記率(基本料)は物件により異なります。
  3. 消費税; ( 基本料金 + 登録料 ) %, 同様に、場所によって異なります。
  4. サービス税;( 基本料金 + 登録料 + 消費税) %

これで、消費税とサービス税を含めるか含めないかを設定する必要があります。最後に、基本料金、登録料、売上税、およびサービス税として、項目ごとの金額を入力する必要があります。

これを達成するには、どのデザインパターンを使用する必要がありますか?

Decorator と Chain-of-Responsibility について混乱しています。そして、それぞれの料金をそこに保管する必要があります。最後に。リストが必要

Desc     Basic  Reg  Sales  Service  Total
------------------------------------------
Item 1   100    25   22     13       160 
Item 2   80     15   12     8        115
------------------------------------------
Total    180    40   34     25       275
4

2 に答える 2

1

デコレータパターンはあなたの要件に合うべきだと思います。

于 2013-05-16T07:28:53.697 に答える
0

いくつかの例。ここで、売上税には登録料、サービス税には売上税が必要であると仮定しています。

interface Payable {
    public float getAmount();
}

abstract class PayableDecorator implements Payable {
    private Payable base;

    public PayableDecorator(Payable base) {
        this.base = base;
    }

    public Payable getBase() {
        return base;
    }
}

class Fee implements Payable {
    private float value;

    public Fee(float value) {
        this.value = value;
    }

    public float getAmount() {
        return value;
    }
}

class RegistrationFee extends PayableDecorator {
    private float registrationPercentage;

    public RegistrationFee(Payable fee, float pct) {
        super(fee);
        registrationPercentage = pct;
    }

    public float getRegistrationPercentage() {
        return registrationPercentage();
    }

    public float getAmount() {
        return getBase() * (1 + registrationPercentage);
    }
}

class SaleTax extends PayableDecorator {
    private float salePercentage;

    public SaleTax(RegistrationFee registration, float pct) {
        super(registration);
        salePercentabe = pct;
    }

    public float getAmount() {
        return getBase() * (1 + salePercentage);
    }
}

class SericeTax extends PayableDecorator {
    private float servicePercentage;

    public SaleTax(SaleTax registration, float pct) {
        super(registration);
        salePercentabe = pct;
    }

    public float getAmount() {
        return getBase() * (1 + servicePercentage);
    }
}

使用:

Payable totalTax = new ServiceTax(new SaleTax(new RegistrationFee(new Fee(100), .1), .03), .01);
于 2013-05-17T00:17:55.580 に答える