0

以下は、Employee オブジェクトを生成する Builder パターン クラスです。

public class Employee {
    // required parameters
    private String HDD;
    private String RAM;

    // optional parameters
    private boolean isGraphicsCardEnabled;
    private boolean isBluetoothEnabled;

    public String getHDD() {
        return HDD;
    }
    public String getRAM() {
        return RAM;
    }
    public boolean isGraphicsCardEnabled() {
        return isGraphicsCardEnabled;
    }
    public boolean isBluetoothEnabled() {
        return isBluetoothEnabled;
    }

    private Employee(EmployeeBuilder builder) {
        this.HDD=builder.HDD;
        this.RAM=builder.RAM;
        this.isGraphicsCardEnabled=builder.isGraphicsCardEnabled;
        this.isBluetoothEnabled=builder.isBluetoothEnabled;
    }

    public static class EmployeeBuilder {
        private String HDD;
        private String RAM;

        // optional parameters
        private boolean isGraphicsCardEnabled;
        private boolean isBluetoothEnabled;

        public EmployeeBuilder(String hdd, String ram){
            this.HDD = hdd;
            this.RAM = ram;
        }

        public EmployeeBuilder isGraphicsCardEnabled(Boolean isGraphicsCardEnabled){
            this.isGraphicsCardEnabled = isGraphicsCardEnabled;
            return this;
        }

        public EmployeeBuilder isBluetoothEnabled(boolean isBluetoothEnabled){
            this.isBluetoothEnabled = isBluetoothEnabled;
            return this;
        }

        public Employee build(){
            return new Employee(this);
        }
    }

    public static void main(String args[]){
        Employee emp = new Employee.EmployeeBuilder("500", "64").
                isGraphicsCardEnabled(true).
                isGraphicsCardEnabled(true).build();

        System.out.println(emp.HDD);
        System.out.println(emp.getHDD());

    }
}

パラメータが設定されたビルダーは罰金を科しAbstract Factory [Gamma95, p. 87]ます。つまり、クライアントはそのようなbuilderをメソッドに渡して、メソッドがクライアント用に 1 つ以上のオブジェクトを作成できるようにすることができます。この使用法を有効にするには、ビルダーを表す型が必要です。リリース 1.5 以降のリリースを使用している場合は、single generic type (Item 26)ビルドするオブジェクトのタイプに関係なく、すべてのビルダーで十分です。

上記の段落に実際の例を使用して、誰でも光を追加できますか。私は、Effective Java - Joshua Blochから取られた上記のパラグラフを理解できません。

4

0 に答える 0