Skip to main content

Flutter ডেভেলপমেন্ট ডিজাইন প্রিন্সিপাল?

 Flutter ডেভেলপমেন্ট ডিজাইন প্রিন্সিপাল?

Flutter আর্কিটেকচার মূলত রিঅ্যাকটিভ প্রোগ্রামিং নীতির উপর ভিত্তি করে তৈরি।
কম্পোজেবল উইজেট তৈরি করতে ফ্লাটার একটি রিঅ্যাকটিভ প্রোগ্রামিং মডেল ব্যবহার করে। 
উইজেট হল ফ্লাটার অ্যাপ্লিকেশনের মৌলিক বিল্ডিং ব্লক যা একটি অ্যাপ্লিকেশনের ইউজার ইন্টারফেস তৈরি করতে ব্যবহৃত হয়।


Solid হল পাঁচটি ডিজাইন প্রিন্সিপালের সংক্ষিপ্ত রূপ যা রবার্ট সি. মার্টিন দ্বারা তৈরি করা হয়েছিল।
এই প্রিন্সিপালগুলো সফ্টওয়্যার ডেভেলপারদের আরও মেইনটেইনেবল বা রক্ষণাবেক্ষণযোগ্য সফ্টওয়্যার সিস্টেম তৈরিতে গাইড করার উদ্দেশ্যে তৈরি করা হয়েছে।
Solid মানে হল:
-Single Responsibility Principle
-Open-Close Principle
-Liskov Substitution Principle
-Interface Segregation Principle and
-Dependency Inversion Principle.
👉আপনাদের সুবিধার্থে আজকে Flutter-এর ডেভেলপমেন্টের ৫ টি প্রিন্সিপাল নিয়ে আলোচনা করা হলো-
✅Single Responsibility Principle (SRP)
একটি ক্লাসের পরিবর্তনের জন্য শুধুমাত্র একটি কারণ থাকা উচিত। অন্য কথায়, একটি শ্রেণীর শুধুমাত্র একটি দায়িত্ব থাকা উচিত।
Flutter-এ SRP ব্যবহার করার জন্য, আপনার এমন ক্লাস তৈরি করা উচিত যেখানে শুধুমাত্র একটি দায়িত্ব আছে। এর মানে হল যে প্রতিটি ক্লাস একটি জিনিস ভাল করে করা উচিত।
উদাহরণস্বরূপ, আপনার যদি এমন একটি ক্লাস থাকে যা ইউজারের অথেন্টিকেশন পরিচালনা করে তবে এটি কেবলমাত্র ব্যবহারকারীর অথিন্টিকেশন-ই পরিচালনা করবে এবং অন্য কোন কিছু করবে না।
✅Open-Closed Principle (OCP)
একটি ক্লাস এক্সটেনশনের জন্য ওপেন থাকা উচিত কিন্তু পরিবর্তনের জন্য ক্লোজড করা উচিত। অন্য কথায়, আপনি একটি ক্লাসের সোর্স কোড পরিবর্তন না করে তার বিহেভিয়ারকে এক্সটেন্ডেড করতে সক্ষম হবেন।
Flutter-এ OCP ব্যবহার করতে, আপনার এমন ক্লাস তৈরি করতে হবে যা এক্সটেনশনের জন্য খোলা কিন্তু পরিবর্তনের জন্য বন্ধ করা যাবে। এর মানে হল যে আপনি একটি ক্লাসের সোর্স কোড পরিবর্তন না করে তার বিহেভিয়ার এক্সটেন্ডেড করতে সক্ষম হবেন।
উদাহরণস্বরূপ, যদি আপনার একটি ক্লাস থাকে যা আইটেমগুলির একটি লিস্ট ডিসপ্লে করে, তাহলে আপনি ক্লাসের সোর্স কোড পরিবর্তন না করেই তালিকায় নতুন আইটেম যোগ করতে পারবেন ।
✅Liskov Substitution Principle (LSP):
একটি সুপারক্লাসের অবজেক্টগুলি প্রোগ্রামের কারেক্টনেসকে ইফেক্ট না করেই তার সাবক্লাসের অবজেক্টের সাথে প্রতিস্থাপনযোগ্য হওয়া যাবে।
Flutter-এ LSP ব্যবহার করার জন্য, আপনাকে এমন সাবক্লাস তৈরি করতে হবে, যেগুলি তাদের পেরেন্ট ক্লাসের সাথে বিনিময়যোগ্যভাবে ব্যবহার করা যেতে পারে।
উদাহরণস্বরূপ, যদি আপনার কাছে Animal নামে একটি সুপারক্লাস এবং Dog নামে একটি সাবক্লাস থাকে, তাহলে আপনি যে কোনও জায়গায় একটি Dog অবজেক্ট ব্যবহার করতে পারবেন যেখানে একটি Animal Object প্রত্যাশিত।
✅Interface Segregation Principle (ISP)
এই প্রিন্সিপাল অনুযায়ী ক্লায়েন্ট যে মেথড ব্যবহার করে না তার উপর নির্ভর করতে বাধ্য করা যায় না। অন্য কথায়, আপনার ইন্টারফেসগুলিকে বড় থেকে ছোট কিংবা আরো নির্দিষ্ট আকারে বিভক্ত করা উচিত যাতে ক্লায়েন্টরা শুধুমাত্র তাদের আগ্রহের ইন্টারফেস সম্পর্কে জানতে পারে৷
Flutter-এ ISP ব্যবহার করার জন্য, আপনার ইন্টারফেসগুলিকে বিভক্ত করতে হবে, যেগুলি খুব বড় ছোট এবং আরও নির্দিষ্ট আকারের মধ্যে যাতে ক্লায়েন্ট শুধুমাত্র তার আগ্রহের ইন্টারফেসটি সম্পর্কে জানতে পারে।
উদাহরণস্বরূপ, যদি আপনার কাছে UserInterface নামে একটি ইন্টারফেস থাকে যাতে অনেকগুলি পদ্ধতি রয়েছে, তাহলে আপনার এটিকে লগইন ইন্টারফেস এবং প্রোফাইল ইন্টারফেসের মতো ছোট ইন্টারফেসে বিভক্ত করা উচিত।
✅Dependency Inversion Principle (DIP)
Flutter ডেভেলাপমেন্ট ডিজাইনের এই প্রিন্সিপাল-টি বলে যে উচ্চ-স্তরের মডিউলগুলি নিম্ন-স্তরের মডিউলের উপর নির্ভর করা উচিত নয়। উভয় অ্যাবস্ট্টাকশনের উপর নির্ভর করা উচিত. কোন অ্যাবস্টাক বিবরণের উপর নির্ভর করা উচিত নয়। ডেসক্রিপশনের ক্ষেত্রে অ্যাবস্ট্রাকশনের উপর নির্ভর করা উচিত।
ফ্লাটারে DIP ব্যবহার করার জন্য, আপনাকে Concrete ইমপ্লিমেন্টেশনের পরিবর্তে অ্যাবস্ট্রাকশনের উপর নির্ভর করতে হবে। এর মানে হল যে উচ্চ-স্তরের মডিউলগুলি নিম্ন-স্তরের মডিউলগুলির উপর নির্ভর করবে না।
উদাহরণস্বরূপ, যদি আপনার একটি ক্লাস থাকে যা একটি ডাটাবেস থেকে ডেটা অ্যাক্সেস করতে হবে, তবে এটি ডাটাবেসের একটি নির্দিষ্ট বাস্তবায়নের পরিবর্তে একটি অ্যাবস্ট্রাক ডেটা সোর্সের ইন্টারফেসের উপর নির্ভর করবে।
মূলত এই ৫ টি ডিজাইন প্রিন্সিপাল আপনি একজন ফ্লাটার ডেভেলপার হিসেবে মেনে চলতে হবে।

Comments

Popular posts from this blog

অফলাইন ডাটা স্টোর করার ৬ টি মাধ্যম

  অফলাইন ডাটা স্টোর করার ৬ টি মাধ্যম যখন ফ্লটারে অফলাইনে ডেটা সংরক্ষণের কথা আসে, তখন এটি করার বিভিন্ন উপায় রয়েছে। অফলাইন ডাটা স্টোরেজ বলতে বোঝায় যে কোনো স্টোরেজ মিডিয়াম যেটিকে প্রত্যেকবার ফিজিক্যালি একটি সিস্টেমে ইনসার্ট করা হয়, যখন কোনো ইউজার ডেটা অ্যাক্সেস বা এডিট করতে চায় । অফলাইন স্টোরেজে সংরক্ষিত ডেটা তার ডিভাইস স্টোরেজে স্থায়ীভাবে থেকে যায় এমনকি ডেটা স্টোরেজের পরে কম্পিউটার থেকে সংযোগ বিচ্ছিন্ন বা আনপ্লাগ করা হলেও। উদাহরণ হিসেবে সহজ কথায় বলা যায়, মোবাইল অ্যাপের কনটেক্সটে, Offline data sync হল এমন একটি ফিচার যা ইউজারদের তাদের ডিভাইস অফলাইনে থাকা অবস্থায়ও ডেটা তৈরি করতে, পরিবর্তন করতে এবং সার্চ করতে দেয়৷ ডিভাইসটি অনলাইনে থাকাকালীন ডেটা লোকাল স্টোরে সংরক্ষণ করা হয় এবং Azure Mobile Apps সার্ভিসের সাথে সিঙ্ক্রোনাইজ করে। ফ্লাটারে, অফলাইনে ডেটা স্টোরেজ করার বিভিন্ন উপায় রয়েছে৷ এরমধ্যে টপ ৬ ধরনের উপায় নিয়ে আজকের আলোচনা- Using Text/CSV/JSON files ডেটা সংরক্ষণের জন্য ব্যবহৃত সবচেয়ে বেসিক ফাইল টাইপ হল TXT, CSV এবং JSON। ডার্ট প্রোগ্রামিং ভাষা সহজেই এই ফাইলগুলি পড়তে এবং লিখত...

Flutter Developer হওয়ার জন্য রোডম্যাপ-

Flutter Developer হওয়ার জন্য রোডম্যাপ-   যেকোনো প্রযুক্তি বা ভাষা শিখতে প্রয়োজন সময় এবং ধৈর্যের। কখনও মাঝখান থেকে শুরু করবেন না, বা এক লাফে অ্যাডভান্স শিখতে শুরু করবেন না, এবং কখনোই নিজের শেখার সাথে অন্যদের তুলনা করতে যাবেন না। বর্তমান আইটি ইন্ডাস্ট্রিতে সবচেয়ে প্রিয় এবং গৃহীত প্রযুক্তির মধ্যে ফ্লাটার অন্যতম। কিন্তু কেন? কেন ফ্লাটার এত শীর্ষে? এত এত ফ্রেমওয়ার্ক থাকতে ফ্লাটারই কেন? এই আর্টিকেলে, আমরা দেখবো কেন ফ্লাটার সবচেয়ে শীর্ষে, এবং জানবো কীভাবে এটা শিখতে হয়। ফ্লাটার কী? ফ্লাটার হচ্ছে সুন্দর ও নেটিভভাবে কম্পাইল্ড অ্যাপ্লিকেশন নির্মাণের জন্য গুগলের ইউআই টুলকিট, যার সাহায্যে ওয়েব, ডেস্কটপ, মোবাইল, এবং এমবেডেড ডিভাইসের জন্য অ্যাপ তৈরি করা যায় মাত্র একটা কোডবেজে। তার মানে এটা বলা যায় যে, আপনি যদি ফ্লাটার দিয়ে আপনার অ্যাপ বা ওয়েবসাইট বানান, তাহলে এটা হবে আরও বেশি সুন্দর, আর হবে অন্যান্য ফ্রেমওয়ার্ক দিয়ে বানানো অ্যাপ বা ওয়েবসাইটের চেয়ে বেশি দ্রুতগতির! তো ফ্লাটার কীভাবে এত জনপ্রিয়তা পাচ্ছে? ফ্লাটার নেটিভ ল্যাঙ্গুয়েজে কোড কম্পাইল করে। স্টার্টাপগুলো ফ্লাটার সহজেই শিখে এমভিপি বানিয়ে ফেলতে...

InApp WebView দিয়ে Webview কন্টেন্ট ব্লকার তৈরী করবেন কিভাবে?

এই আর্টিকেলে, আমরা flutter in app web view প্লাগইন ব্যবহার করে আমাদের ওয়েবভিউ ইন্সট্যান্সের জন্য একটি কাস্টম কনটেন্ট ব্লকার তৈরি করা শিখবো। কন্টেন্ট ব্লকার সাধারণত বিজ্ঞাপন ব্লক করার জন্য ব্যবহার করা হয়, কিন্তু আপনি অন্য কোনো কন্টেন্ট ব্লক করতেও ব্যবহার করতে পারেন। ব্লকিং বিহেভিয়ারের মধ্যে রয়েছে এলিমেন্টস হাইড করা, লোড ব্লক করা এবং iOS এবং macOS-এ, WebView রিকুয়েস্ট থেকে কুকি রিমুভ করা। মনে রাখবেন, স্পেশালাইজড এক্সটেনশন যেমন অ্যাডব্লক (AdBlock) বা অ্যাডব্লক প্লাসের (AdBlock Plus) কার্যকারিতা আর কন্টেন্ট ব্লকারের কার্যকারিতা একই লেভেলের না। কন্টেন্ট ব্লকার হলো এমন একটি রুলসের সেট যা কখনই ওয়েবভিউ থেকে কোনো কলব্যাক বা নোটিফিকেশন ফিরে পায় না যখন এটি ব্লক করার জন্য প্রয়োজনীয় কন্টেন্ট খুঁজে পায়। **InAppWebViewSettings **ক্লাসের  contentBlockers  প্রোপার্টির মাধ্যমে আমরা ContentBlocker এর এমন ইন্সট্যান্সের একটি লিস্ট তৈরি করতে পারি ওয়েবভিউয়ের ব্যবহারের জন্য। দ্যা কনটেন্টব্লকার ক্লাস (The ContentBlocker class) আমরা ContentBlocker ক্লাসে কনটেন্ট-ব্লকিং বিহেভিয়ার সংজ্ঞায়িত করি...