جافا سريع السؤال: إنشاء فئة معينة فقط من آخر؟

StackOverflow https://stackoverflow.com/questions/405826

  •  03-07-2019
  •  | 
  •  

سؤال

ومشكلتي هي على النحو التالي: I بحاجة إلى وسيلة لضمان فئة معينة فقط يمكن للمرء أن مثيل آخر. أنا لا أريد أن يكون لجعل الآخر فئة داخلية متداخلة أو شيء من هذا القبيل البكم. كيف أقوم بهذا العمل؟ أنسى مرتجلا.

هل كانت مفيدة؟

المحلول

تأكد القطاع الخاص المنشئ. إنشاء أسلوب مصنع ثابت يأخذ مثيل من الفئة التي يسمح الوصول. هل لديك طريقة مصنع إنشاء كائن مناسبة واستخدام settor على الكائن الذي يسمح بالوصول إلى كائن تم إنشاؤه لإعطاء تلك الفئة النسخة التي تم إنشاؤها.

public class AllowedAccess
{
    private SecureClass secure;
    public setSecureClass( SecureClass secure )
    {
        this.secure = secure;
    }

    ...
}

public class SecureClass
{
     private SecureClass() {}

     public static void Create( AllowedAccess allowed )
     {
          allowed.setSecureClass( new SecureClass() );
     }

     ...
}

وراجع للشغل، وأنا المشبوهة من هذا التصميم. يبدو يقترن جدا جدا بالنسبة لي.

نصائح أخرى

وهناك فئة الداخلية ثابتة خاصة هو بالضبط ما تريد. لا شيء البكم حول هذا الموضوع.

public class Creator {
  private static class Created {
  }
}

وإلا يمكنك حماية فقط مثيل على مستوى الحزمة.

public class Created {
  Created() {
  }
}

والذي يعطي دروسا الوحيدة من نفس وصول الحزمة إلى المنشئ.

هل يمكن أن تجعل الفئة التي هي في الحماية من حزمة مثيل الخاص.

وأنا أتفق مع الإجابة tvanfosson وأيضا مع تعليقه حول اقتران مرتفعة للغاية. لماذا لا يتم الاحتفاظ المزيد من السيطرة منكم عملية إنشاء الفئة عن طريق اعتماد إطار مراقبة مثل الربيع أو <وأ href = "http://code.google.com/p/google-guice / "يختلط =" نوفولو noreferrer "> Guice ؟

وIMHO إنشاء فئات مع بيان "الجديد" هو يعتبر قليلا ... عفا عليها الزمن، والمصانع هي أن يفضل وأطر اللجنة الاولمبية الدولية حتى أكثر من ذلك.

والتحيات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top