JavaRush /Java blogi /Random-UZ /Shakl quruvchi

Shakl quruvchi

Guruhda nashr etilgan
Ushbu naqsh sinfda bir xil turdagi parametrlar ko'p bo'lsa va ularning tartibi va maqsadini eslab qolish qiyin bo'lganda foydalanish tavsiya etiladi.
Pattern Builder - 1
public class Good{
   public final int a;
   public final int b;
   public final int c;
   public final int d;
   public final int e;
   public final int f;
//Реализация Builder через статический внутренний класс
public static class Builder{
//Обязательные параметры
    public int a;
    public int b;
//Необязательные параметры со значениями по умолчанию
public int c = 0;
public int d = 0;
public int e = 0;
public int f = 0;
//Конструктор с обязательными параметрами
public Builder(int a, int b){
this.a=a;
this.b=b;
}
//Методы с возвращающим типом Builder для необязательного параметра с, d, e, f,
  public Builder c (int val) {
            c = val;
            return this;
        }
  public Builder d (int val) {
            d = val;
            return this;
        }
  public Builder e (int val) {
            e = val;
            return this;
        }
  public Builder f (int val) {
            f = val;
            return this;
        }
//Метод с возвращающим типом Good для генерации an object
public Good buidl() {
            return new Good (this); }
private Good(Builder builder) {
        a = builder.a;
        b = builder.b;
        c = builder.c;
        d = builder.d;
        e = builder.e;
        f = builder.f;     }
Endi usulda mainob'ektni yaratishda Builderkerakli parametrlarga ega statik sinfning konstruktori chaqiriladi. Keyin barcha kerakli ixtiyoriy parametrlar nuqta orqali chaqiriladi. buidl();Nihoyat, ob'ektni yaratish uchun usul chaqiriladi .
Good good = new Good.Builder(40, 20)
        .c(2)
        .d(4)
        .e(23)
        .f(9)
        .buidl();
Agar ikkita zarur va bitta ixtiyoriy parametrga ega ob'ekt yaratmoqchi bo'lsam, u quyidagicha ko'rinadi:
Good good = new Good.Builder(40, 20)
        .c(2)
        .buidl();
Agar faqat ikkita talab qilinadigan parametrga ega ob'ekt yaratmoqchi bo'lsam, u quyidagicha ko'rinadi:
Good good = new Good.Builder(40, 20)
         .buidl();
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION