وضع ذبابة الوزن: من خلال تقنية المشاركة ، يمكن أن يدعم بشكل فعال عددًا كبيرًا من الكائنات الدقيقة.
يتم تقسيم وضع التمتع باليوان إلى وضع بسيط للاستمتاع باليوان والاستمتاع بوضع يوان في "Java and Mode" في Yan Hong. لا يمكن مشاركة المركب في الوضع المركب. مفتاح مشاركة كائن اليوان يتمتع بالتمييز بين الحالات الداخلية والخارجية. هذان "المتطابقين" يصعب فهمهما. أنا لا أقول أن الترجمة ليست جيدة ، ولكن ربما تكون قدرتي على فهمي ضعيفة ، أو يتم ترجمة إصدار الترجمة من "عناصر نمط التصميم للبرامج الموجه نحو الكائنات القابلة لإعادة الاستخدام" إلى كائنات داخلية وخارجية. إنه واضح ومباشر ويشعر بالحرج للرائحة الأدبية للأشياء المفاهيمية القوية للغاية. تستخدم الشخصيات هنا أيضًا عبارة "أساسيات البرامج الموجه نحو الكائنات القابلة لإعادة الاستخدام" ، والتي لا تميز بين الأوضاع البسيطة والأوضاع المركبة ، ولكن لديها وزن غير محدد (في "Java and Mode" ، فهو يشير إلى أنه لا يمكن مشاركة التمتع المركب). نقول هنا أنه لا يمكن أن يشارك أدوار التمتع. وبهذه الطريقة ، تشمل الشخصيات في وضع التمتع:
الرسم البياني المؤسسي لفئة نموذج Xiangyuan هو كما يلي:
عند استخدام نمط الموسوعة في تصميم java.lang.string ، نعلم أن الأوتار في Java تتم مشاركتها دائمًا ، مثل مقتطف الكود التالي:
String m = "a" ؛ string n = "a" ؛ system.out.println (m == n) ؛
سيؤدي ذلك إلى إخراج هذا صحيح ، مما يشير إلى أن M و N يشيران إلى نفس الحالة ، وهناك واحد فقط "A" في الذاكرة. هذه هي الطريقة التي يتم بها استخدام وضع اليوان في السلسلة.
استخدام وضع Xiangyuan في عملية تحرير النص وتخزينه. هنا ، من المفترض أن تتكون المقالة من كائنات خط وأن كائنات الخط مكونة من العديد من كائنات الأحرف. ومع ذلك ، إذا قام كل حرف بحفظ كائنه الخاص ، فإن المنشور يحتوي على آلاف كائنات الأحرف ، والتي تستهلك بشكل خطير ذاكرة النظام وتسبب في وقت تشغيل وقت التشغيل غير المقبول. تتمثل الطريقة الجيدة في استخدام وضع Xiangyuan لحفظ قيم ترميز أحرف ASCII فقط ، كحالة غير متغيرة داخلية ، ومشاركة كائنات الأحرف ، والبيانات المنسقة مثل لون الحرف النسبي وحجمها يتم الحفاظ عليها من قبل العميل ، ويمكن تمريرها من الخارج أثناء وقت التشغيل. كل صف هو كائن عالمي غير مشترك ، يتكون من كائن عالمي (كائن حرف).
دعونا نلقي نظرة على مثال على بنية بسيطة لنمط الموسوعة:
/ *** رسالة*/ خطاب الفئة العامة {اسم السلسلة الخاصة ؛ رسالة عامة (اسم السلسلة) {this.name = name ؛ } السلسلة العامة getName () {return name ؛ }} / ** * مصنع Xiangyuan (مصنع Singleton) الذي يولد كائنات حرف */ فئة عامة letterfactory {private map <String ، Letter> Map ؛ مثيل static static static static = new LetterFactory () ؛ private Letterfactory () {map = new hashmap <string ، letter> () ؛ } static static letterfactory getInstance () {return مثيل ؛ } public void add (حرف حرف) {if (letter! = null &&! map.containskey (letter.getName ())) {map.put (letter.getName () ، letter) ؛ } system.out.println ("map.size ====" + map.size ()) ؛ } get letter get (string name) {return map.get (name) ؛ }} اختبار الفئة العامة {public static void main (string [] args) {letterfactory factory = Letterfactory.getInstance () ؛ سلسلة سلسلة = "السهولة" ؛ addletterbyname (مصنع ، كلمة) ؛ getletter (مصنع ، كلمة) ؛ } // إضافة كائن حرف ثابت addletterbyname (مصنع LetterFactory ، كلمة سلسلة) {for (char c: word.tocharray ()) {factory.add (رسالة جديدة (c + "")) ؛ }} // كائن الحروف الإخراج static void getletter (Letterfactory Factory ، string word) {for (char c: word.tocharray ()) {system.out.println (factory.get (c + "")) ؛ }}}مطبعة:
map.size ==== 1 map.size ==== 2 MAP.SIZE ===== 2 MAP.SIZE ======= MAP.SIZE ===== MAP.SIZE ==== 5 MAP.SIZE ========LELEIGHT.LETTER@3343C8B3 flyweigh flyweight.letter@1aa8c488 flyweight.letter@3dfeca64 flyweight.letter@22998b08 flyweight.letter@1aa8c488