সহজ বাংলায় ডিজাইন প্যাটার্ন: ফ্যাসাড (Facade)

ডিজাইন প্যাটার্ন শুনলেই অনেকেই ঘেমে ওঠেন আর মনে পড়ে যায় গ্যাং-অব-ফোরের দাঁত কিড়মিড় করা ডিজাইন প্যাটার্ন বইটার কথা। তবে মজার বিষয় হল যে আমরা আমাদের নিত্যদিনের প্রোগ্রামিংয়ে অনেকসময়ই জেনে বা না জেনে এসব প্যাটার্ন ব্যবহার করে থাকি, কিন্তু টেকনিক্যাল নাম শুনলে অনেকেই বলতে পারি না যে জিনিসটা আসলে কি। এখন থেকে আমি চেষ্টা করব একদম সহজে কিছু বহুল প্রচলিত ডিজাইন প্যাটার্ন বুঝিয়ে দিতে, আর তারই প্রচেষ্টা হিসেবে আজকের বিষয় হল Facade বা “ফ্যাসাড”

একটু কঠিন বাংলায় ফ্যাসাড হল কোন অবজেক্ট (বা অবজেক্টসমূহ) আরও সহজে ব্যাবহার করার জন্য কুইকলি কোন ফাংশন বা আরেকটা অবজেক্ট লেখা, যার ফলে ব্যবহারকারী কষ্ট না করে অনেক সহজে সেই অবজেক্ট (বা অবজেক্টসমূহ) ব্যবহার করতে পারবেন।

এবার চলুন সহজ বাংলায় বুঝি ফ্যাসাড কি। ধরুন আপনার সর্ষে ইলিশ খেতে ইচ্ছা করলো। আপনি জানেন যে এখন কষ্ট করে সর্ষে কিনে আনা লাগবে, বাটা লাগবে। তারপর রয়েছে আরও কঠিন কাজ – ইলিশ মাছ কিনে ধুয়ে সেটা কাটতে হবে। তারপর আরও মসলা দিয়ে চুলায় অনেক্ষন রান্না করে স্বাদ হলে নামাতে হবে। পুরো বিষয়টা অনেক সময় সাপেক্ষ এবং ঝামেলার তো বটেই। এসব না করে আপনি আপনার কাছের মানুষকে বাজারের টাকা দিয়ে বললেন “আমি আজকে সর্ষে ইলিশ খাব”। আপনার প্রিয় মানুষটি কিন্তু তখন সব কাজ নিজে নিজে ম্যানেজ করবে। দিন শেষে আপনি প্লেটে ঠিকই সর্ষে ইলিশ পাবেন কিন্তু মাছ কেনা, সর্ষে বাটা বা রান্না করা এগুলো কিছুই আপনাকে করতে হবে না কারন আপনার প্রিয় মানুষটি এই কাজগুলো করে ফেলেছে।

এই প্রিয় মানুষটিই হল আপনার জন্য ফ্যাসাড, যে কিনা তলায় তলায় সবকিছু করে ফেলছে – আপনি তাকে শুধু বাজার করার জন্য প্রয়োজনীয় টাকা দিয়েছেন, বলেদিয়েছেন যে আপনি ইলিশ মাছ খাবেন এবং এটা হবে সর্ষে ইলিশ (টাকা, ইলিশ, সর্ষে = প্যারামিটার)। তিনি সবকিছু করে আপনাকে সর্ষে ইলিশ রিটার্ন করেছেন – আপনাকে জানতেও হয়নি কিভাবে কি হল 🙂

প্রোগ্রামিংয়ের ভাষায় একটু উদাহরন দেয়া যাক। ধরুন আপনি অ্যামাজন এসথ্রি তে ফাইল আপলোড করতে চান. এজন্য আপনাকে এসথ্রিতে সার্টিফিকেট অথেনটিকেট করা লাগবে, বাকেট চেক করা লাগবে, এরপর পারমিশন চেক করা লাগবে, সবশেষে ফাইলটি ম্যানুয়ালি এইচটিটিপি প্রোটকল দিয়ে পোস্ট করা লাগবে। এই কাজ গুলো করার জন্য অ্যামাজন তাদের এসডিকে তে একটা পিএইচপি লাইব্রেরী দিয়ে দিয়েছে যেটা দিয়ে স্টেপ বাই স্টেপ এগুলো ফলো করে একটা ফাইল আপলোড করতে হয়। কিন্তু আপনি এসব কিছুই করতে চান না। তাই অন্য কেউ আপনাকে একটা সিম্পল ফাংশন লিখে দিল যেটা কিনা আপনার কাছ থেকে প্রয়োজনীয় প্যারামিটার গুলো নিয়ে ভিতরে ভিতরে সব কাজ গুলো করে ফাইলটি আপলোড করে দিবে। কিভাবে কি হল, আপনাকে জানতে হবে না – আপনি জাস্ট এই একটা ফাংশন কল করবেন। এই ফাংশন টিই হল একটি ফ্যাসাড 🙂

আরও জানতে চাইলে গফের বই বা উইকিপিডিয়া বা গুগল তো রয়েছেই 🙂 http://en.wikipedia.org/wiki/Facade_pattern

আশাকরি আপনাদের ভালো লেগেছে। ভালো লাগলে বা না লাগলেও জানাতে ভুলবেন না 🙂