ক্যাসল উইন্ডসর নিয়ন্ত্রণ সরঞ্জামের একটি বিপরীতমুখী। এটির মতো অন্যরাও আছেন।
এটি ঠিক সেখানে প্রাক-বিল্ট এবং প্রাক-তারযুক্ত নির্ভরতা সহ আপনাকে অবজেক্টগুলি দিতে পারে। "নতুন" অপারেটরের পরিবর্তে প্রতিচ্ছবি এবং কনফিগারেশনের মাধ্যমে একটি সম্পূর্ণ অবজেক্ট গ্রাফ তৈরি করা হয়েছে।
এখানে শুরু করুন: http://tech.groups.yahoo.com/group/altdotnet/message/10434
আপনার ইমেল পাঠানোর ক্লাসটি কল্পনা করুন। EmailSender। কল্পনা করুন আপনার আরও একটি ক্লাস ওয়ার্কফ্লোস্টিপার রয়েছে। ওয়ার্কফ্লো স্টেপরের অভ্যন্তরে আপনাকে ইমেলসেন্ডার ব্যবহার করতে হবে।
আপনি সবসময় বলতে পারে new EmailSender().Send(emailMessage);
কিন্তু এটি - এর ব্যবহার new
- একটি শক্ত আবরণ তৈরি করে যা পরিবর্তন করা শক্ত। (এটি সর্বোপরি একটি ছোট্ট উদাহরণ স্বরূপ)
তাহলে কী, যদি এই খারাপ ছেলেটিকে ওয়ার্কফ্লোস্টেপরের অভ্যন্তরে নতুন করার পরিবর্তে, আপনি কেবল এটি নির্মাণকারীর মধ্যে দিয়ে গেছেন?
সুতরাং যারাই এটি ডেকেছে ইমেলসেন্ডারটি নতুন করে তুলতে হবে।
new WorkflowStepper(emailSender).Step()
কল্পনা করুন যে আপনার এই শত শত ছোট ক্লাস রয়েছে যার কেবলমাত্র একটি দায়িত্ব (গুগল এসআরপি) .. এবং আপনি ওয়ার্কফ্লোস্টেপারে তাদের কয়েকটি ব্যবহার করেন:
new WorkflowStepper(emailSender, alertRegistry, databaseConnection).Step()
EmailSender
আপনি কখন লিখছেন WorkflowStepper
বা কখন তা বিশদ নিয়ে উদ্বিগ্ন না হয়ে ভাবুনAlertRegistry
আপনি যে উদ্বেগ নিয়ে কাজ করছেন সে সম্পর্কে আপনি কেবল উদ্বিগ্ন।
বস্তু এবং নির্ভরতার এই পুরো গ্রাফ (গাছ) এর কল্পনা করুন রান সময়টিতে তারে ওয়্যার্ড হয়ে যায়, যাতে আপনি যখন এটি করেন:
WorkflowStepper stepper = Container.Get<WorkflowStepper>();
আপনার WorkflowStepper
যেখানে প্রয়োজন সেখানে স্বয়ংক্রিয়ভাবে পূর্ণ নির্ভরতাগুলির সাথে আপনি একটি সত্যিকারের চুক্তি পান ।
এমন কিছু নেই new
এটি কেবল ঘটে - কারণ এটি জানেন কী কী প্রয়োজন।
এবং আপনি পরীক্ষামূলক এবং পুনরাবৃত্তযোগ্য উপায়ে আরও ভাল ডিজাইন করা, ডিআরওয়াই কোড দিয়ে কম ত্রুটি লিখতে পারেন।