1. مقدمة لنموذج المصنع البسيط
وضع المصنع البسيط ، المعروف أيضًا باسم "وضع طريقة المصنع الثابت". إنه ينتمي إلى "وضع إنشاء" (نمط إنشاء كائن) وهو تطبيق خاص لنمط "طريقة المصنع".
عادة ، نستخدم نمط المصنع البسيط لإنشاء فصول. على سبيل المثال ، يتم تحقيق كائنات تجمع مؤشرات الترابط من خلال وضع المصنع البسيط. مخطط هيكله كما يلي:
المصنع: المصنع هو جوهر نموذج المصنع البسيط ويوفر واجهات خارجية. عندما يرغب العميل أو برنامج آخر في الحصول على كائنات المنتج ، يتم الحصول عليها من خلال واجهة المصنع.
المنتجات المجردة: يتم استخلاص المنتجات المجردة بواسطة (العديد) منتجات مختلفة. يمكن أن يكون المنتج واجهة أو فئة مجردة.
منتج محدد: يتم بالفعل إنشاء كائن المنتج الذي تم إرجاعه في المصنع من خلال بنية concreteProduct.
2. نموذج رمز نمط المصنع البسيط
Public Class Factory {Public Static Product NewInstance () {Return New ConcreteProduct () ؛ }} المنتج التجريبي العام {} الفئة العامة concreteproduct يمتد المنتج {public concreteproduct () {}} رسم تخطيطي للطبقة من النموذج
3. التطبيق العملي لنموذج المصنع البسيط
عندما نكتب servlet للتعامل مع طلبات العميل ، فإننا غالبًا ما نتعامل مع منطق الأعمال المتعددة في Servlet ، على سبيل المثال:
void dopost المحمية (طلب httpservletrequest ، httpservletresponse استجابة) {string flag = request.getParameter ("flag") ؛ if (flag.equals ("service1")) {service1 () ؛ } if if (flag.equals ("service2")) {service2 () ؛ } ...}ما ورد أعلاه هو الطريقة العامة لـ Servlet لدينا للتعامل مع المنطق متعدد الأعمال ، وكتابة مجموعة من العبارات الأخرى. هناك طريقة أفضل هي فصل التوزيع المطلوب عن servlet ، بحيث يتعامل Servlet فقط مع منطق العمل. نحن نعتبر مختلف servlets فصول المنتج. javax.servlet.httpservlet هي فئة الوالدين للمنتج ، و javax.servlet.servlet هي واجهة المنتج. وبهذه الطريقة ، نحدد servletfactory ، ونجعل طلب عنوان URL في المرشح وقم بتسليمه إلى servletfactory للمعالجة. هذا هو تطبيق مصنع بسيط.
webfilter ("/transrequest") الطبقة العامة transrequest تنفذ filter {private string servletName ؛ Override public void dofilter (servletrequest request ، servletResponse ، سلسلة filterchain) يلقي ioexception ، servletexception {httpservletrequest myrequest = (httpservletrequest) ؛ // احصل على اسم servlet المطلوب ، ونحن نتفق هنا على أن الطلب في شكل أسماء سلسلة/servletName [] = myrequest.getRequesturi (). trim (). split ("/") ؛ servletName = أسماء [2] ؛ if (servletName! = null) {// فيما يلي مثالان أكثر نموذجية للمصانع البسيطة servlet servlet = servletfactory.createservlet (servletName) ؛ servlet.service (طلب ، استجابة) ؛ } else chain.dofilter (طلب ، استجابة) ؛ } في كل مرة نطلب فيها طلبًا ، نستخدم المصنع لإنتاج servlet ، والذي يمكنه تجنب تكوين كمية كبيرة من معلومات مسار Servlet في XML. وهذا سيجعل المنطق أكثر وضوحًا ، ويتعامل Servlets مع الأعمال التجارية فقط على مستوى العمل.
فئات المصانع هي كما يلي:
فئة عامة servletfactory {public static servlet CreateServlet (String servletname) يلقي servleTexception {if (servletname.equals ("servletname1")) {return new service1 () ؛ } else if (servletname.equals ("servletName2")) {return new service2 () ؛ } آخر {رمي servleTexception جديد ("لا مثل هذا servlet") ؛ }}}على الرغم من أن فئة المصنع أعلاه لا تضع جانباً مرهقة إن أخرى ، إلا أن فكرة استخدام المصنع البسيط لا تزال تحل بعض المشكلات. المصنع البسيط هو نمط تصميم بسيط للغاية لا يمكن اعتباره نمط تصميم ، والمشاكل التي تم حلها محدودة أيضًا. تم تنفيذ توزيع الطلب أعلاه. على سبيل المثال ، Struts2 ، بالطبع ، الإطار ليس مصنعًا بسيطًا.
4. ملخص
نموذج المصنع البسيط ، لتلخيص ، هو فئة المصنع ، أو واجهة منتج (في الواقع ، يمكن أن يكون أيضًا فئة مجردة ، أو حتى فئة أولياء أمور عادية) ومجموعة من المنتجات المحددة التي تنفذ واجهات المنتج. تنشئ فئة المصنع فئة تنفيذ محددة تعتمد على المعلمات التي تم تمريرها وتحولها إلى الأعلى إلى واجهة كنتيجة.