أدناه سأستخدم مثالين لتوضيح قابلية التوسع بشكل كامل في جافا. كمبرمجة ممتازة ، يجب أن تفهم قابلية التوسع في البرامج ، والتي تفضي إلى التطوير اللاحق للبرامج.
المثال الأول:
استخدم اللوحة الأم للكمبيوتر كمثال. بالنسبة للوحة الأم للكمبيوتر ، نحن على دراية به ، هل هناك العديد من الوحدات النمطية وبطاقات الشبكة وبطاقات الصوت فيه؟ إذا كنت ترغب في استخدام هذه الوظائف ، فيمكنك فقط استخدام اللوحة الأم لتشغيلها ثم تشغيل بطاقات الشبكة وبطاقات الصوت. ولكن كيف يمكن تحقيق ذلك بلغة البرمجيات؟ هل يجب عليك تشغيل اللوحة الأم أولاً ، ثم تشغيل بطاقة الصوت أو بطاقة الشبكة؟ ولكن وبهذه الطريقة ، فإن التوسع ليس مرتفعًا ، وتكرار تشغيل بطاقة الصوت وتشغيل بطاقة الشبكة. علاوة على ذلك ، تحتوي العديد من الوحدات أيضًا على مثل هذه الوظائف ، بحيث يمكنك ببساطة تشغيل الوحدة النمطية على اللوحة الأم. هذا واحد منهم. إذا ، في ذلك اليوم ، عند تحديث التكنولوجيا وظهرت وحدة جديدة ، هل تحتاج إلى إنشاء كائن الوحدة النمطية ثم التشغيل مرة أخرى؟ من الواضح أن هذا لا يفضي إلى التنمية. ومع ذلك ، في هذه المشكلة ، بعد مناقشة الشركات المصنعة للوحة الأم مع شركات تصنيع بطاقة الصوت وبطاقات الشبكة ، سيستخدمون واجهة PCI لتوصيل اللوحة الأم والوحدة في المستقبل ، مما يحل تمامًا مشكلة عدم القدرة على استخدام التحديثات أو إعادة استخدامها. هذا يتوافق مع تعدد الأشكال في جافا لدينا. باستخدام تعدد الأشكال ، يمكننا بشكل كبير تحسين قابلية التوسع في البرنامج!
الرمز المحدد كما يلي!
/*المتطلبات: أمثلة تشغيل الكمبيوتر ، تعمل الكمبيوتر بناءً على اللوحة الأم. */interface pci {public void open () ؛ public void close () ؛} class mainboard {public void run () {system.out.println ("Mainboard Run") ؛ } public void usepci (pci p) // pci p = new netcard () // interface reference يشير إلى كائن الفئات الفرعية الخاصة به. {if (p! = null) {p.open () ؛ P.Close () ؛ }}} class netcard تنفذ pci {public void open () {system.out.println ("netcard open") ؛ } public void close () {system.out.println ("netcard close") ؛ طريقة()؛ }} class soundcard تنفذ pci {public void open () {system.out.println ("SoundCard Open") ؛ } public void close () {system.out.println ("SoundCard Close") ؛ }}/*class mainboard {public void run () {system.out.println ("Mainboard Run") ؛ } public void usenetcard (netcard c) {c.open () ؛ C.Close () ؛ }} class netcard {public void open () {system.out.println ("netcard open") ؛ } public void close () {system.out.println ("netcard close") ؛ }}*/class duotaidemo5 {public static void main (string [] args) {mainboard mb = new Mainboard () ؛ mb.run () ؛ MB.USEPCI (NULL) ؛ mb.usepci (netcard () جديد) ؛ MB.USEPCI (New Soundcard ()) ؛ }}المثال الثاني:
استخدم قواعد البيانات الشائعة لشرح تعدد الأشكال. بالنسبة لقواعد البيانات التي نتعرف عليها ، يوجد حاليًا وضعان اتصال لقاعدة البيانات: JDBC و Hibernatelian Connection. عند استخدام قواعد البيانات ، هناك عمليتان أساسيتان: الاتصال والإغلاق. في هذا الوقت ، استخدم الواجهة لتغليف هاتين العمليتين ، وتحتاج إلى استخدام وضع الاتصال لتغيير اسم الفصل مباشرة!
الرمز المحدد كما يلي!
/*المتطلبات: تشغيل قاعدة البيانات. البيانات هي: معلومات المستخدم. 1. الاتصال بقاعدة البيانات. JDBC Hibernate2 ، تعمل قاعدة البيانات. C Create R Read U Update D DELETE3 ، أغلق اتصال قاعدة البيانات. */interface userinfodao {public void add (user user) ؛ Public Void Delete (مستخدم المستخدم) ؛} class userInfobyjdbc تنفذ userinofdao {public void add (user user) {1 ، jdbc connect to database. ؛ 2. استخدم SQL لإضافة عبارة لإضافة بيانات. ؛ 3 ، أغلق الاتصال. } public void delete (المستخدم المستخدم) {1 ، يتصل JDBC بقاعدة البيانات. ؛ 2. استخدم SQL إضافة عبارة لحذف البيانات. ؛ 3 ، أغلق الاتصال. }} class userinfobyhibernate تنفذ userinfodao {public void add (user user) {1 ، يتصل hibernate بقاعدة البيانات. ؛ 2. استخدم SQL لإضافة عبارة لإضافة بيانات. ؛ 3 ، أغلق الاتصال. } public void delete (user user) {1 ، يتصل hibernate بقاعدة البيانات. ؛ 2. استخدم SQL إضافة عبارة لحذف البيانات. ؛ 3 ، أغلق الاتصال. }} class dboperate {public static void main (string [] args) {// userinfobyjdbc ui = new userinfobyjdbc () ؛ // userinfobyhibernate ui = new userinfobyhibernate () ؛ userInfodao ui = userinfobyhibernate () جديد userInfobyHiberNate () ؛ ui.add (المستخدم) ؛ ui.delete (المستخدم) ؛ }}تلخيص:
1. كلا الأمثلة تستخدم واجهات لتجريد بعض العمليات المتكررة. من أجل تمكين وحدات مختلفة من استخدام هذه العمليات مباشرة وبسرعة ، يمكننا استخدام التحول التصاعدي متعدد الأشكال مباشرة (انظر مدونتي السابقة) ، ثم استخدم مرجع الفئة الأصل للاتصال به. على أي حال ، بغض النظر عما إذا كانت التكنولوجيا محدثة ومتاحة وحدات جديدة أو يتم استبدال الوحدات النمطية الحالية ، يمكننا استخدام مرجع الفئة الأصل للاتصال مباشرة بعملياتها المشتركة!
2. ليس عليك استخدام واجهات ، يمكنك أيضًا استخدام فصول مجردة. ومع ذلك ، فإن استخدام الواجهات سيكون أكثر قابلية للتطوير. إذا قمت بتحديثها في المستقبل ، فيمكنك تغيير الواجهة مباشرة دون تغيير الفئات المجردة. ثانياً ، يمكن أن يكون استخدام واجهات موروثة أكثر! هذا هو أيضا مكان مناسب.
تستخدم المقالة أعلاه Java مثالين لتوضيح قابلية التوسع بشكل كامل. هذا هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.