JavaRush /مدونة جافا /Random-AR /منشئ الأنماط
Нина Можарская
مستوى
Киев

منشئ الأنماط

نشرت في المجموعة
يوصى باستخدام هذا النمط عندما يحتوي الفصل على عدد كبير من المعلمات من نفس النوع ويصعب تذكر ترتيبها والغرض منها.
منشئ الأنماط - 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