Нина Можарская
مرحله
Киев

الگوساز

در گروه منتشر شد
این الگو برای زمانی استفاده می شود که یک کلاس دارای تعداد زیادی پارامتر از یک نوع باشد و به خاطر سپردن ترتیب و هدف آنها دشوار باشد.
الگوساز - 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;     }
حال در متد mainهنگام ایجاد یک شی، سازنده کلاس استاتیک Builderبا پارامترهای مورد نیاز فراخوانی می شود. سپس تمام پارامترهای اختیاری لازم از طریق نقطه فراخوانی می شوند. در نهایت یک متد buidl();برای تولید شی فراخوانی می شود.
Good good = new Good.Builder(40, 20)
        .c(2)
        .d(4)
        .e(23)
        .f(9)
        .buidl();
اگر بخواهم یک شی با دو پارامتر مورد نیاز و یک پارامتر اختیاری ایجاد کنم، به شکل زیر خواهد بود:
Good good = new Good.Builder(40, 20)
        .c(2)
        .buidl();
اگر بخواهم یک شی فقط با دو پارامتر مورد نیاز ایجاد کنم، به نظر می رسد:
Good good = new Good.Builder(40, 20)
         .buidl();
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION