سؤال

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

_type1[location] = ArrayOfType1s
_type2[location] = ArrayOfType2s
_type3[location] = ArrayOfType3s

التي تعمل إذا كان لدي فقط ثلاثة أنواع، ولكن إذا قررت إضافة المزيد مع مرونة نمط المصنع، فإن ذلك يعرض مشكلة كيفية تخزينها، كما يجب عليك تقديم قاموس خاص في كل مرة أضيف فيها ...

الإجابة الوحيدة التي يمكنني التفكير فيها هي أن عش قواميسي، والتي تبدو بطيئة جدا.

_factoryOutput[type] = type[location] = ArrayOfTypes

ربما يكون هذا الحل القابل للتطبيق، ولكن يمكن لأي شخص أن يقترح نظافة واحدة؟ أنا أعمل في AS3، لكن لا تتردد في توفير حل أكثر عام.

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

المحلول

حل واحد ممكن هو الحصول على منتجاتك طريقة GetType (). يمكن أن يؤدي ذلك فقط إلى إرجاع سلسلة أو int فريدة من نوعها لنوع المنتج هذا. يمكنك ديناميكاليا قم بإنشاء صفائف فريدة من نوعها لأنواع المنتجات أثناء تواجدها (أي: تحقق من وجود مجموعة للنوع، وإنشاء إذا لزم الأمر قبل التخزين) أو بدلا من ذلك، فيمكنك تخزين جميع أنواع المنتجات في صفيف واحد، وتتمتع بوظائف المرشح لاستردادها. مثال على ذلك سيكون:

function getProductsByType(type:String):Array {
    var matched:Array = [];
    for(//loop over all products) {
        //if type is what your looking for, push into matched array
    }

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