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

Dart Keyword -

Dart is an object-oriented, class-based programming language that's used for building web, server, desktop, and mobile applications. The Dart programming language has a number of keywords that have special meanings. Some of these include: abstract: Used before a class to define it as abstract, which means it can't be instantiated, only inherited. as: Used for type casting. assert: Used for debugging. It disrupts normal execution if a boolean condition is false. async, await: Used to denote asynchronous operations. break: Used to exit from a loop or switch-case statement. case, default: Used in switch-case statements. class: Used to define a class. const: Denotes that a variable is a compile-time constant. continue: Used to skip the rest of the current loop iteration and move to the next one. dynamic: Denotes that the type of the variable is dynamic and can change. else, if: Used for conditional statements. enum: Used to define an enumeration. extends: Used for class inheritance...

Rest API পার্ট ৩

  Rest API পার্ট ৩ কিভাবে REST API ব্যবহার করবেন আমরা যে Rest API ব্যবহার করি, সেই REST রিকুয়েস্ট মূলত এন্ডপয়েন্ট, HTTP পদ্ধতি, হেডার এবং বডি দ্বারা গঠিত। যখন একজন ক্লায়েন্টের কোন একটি রিসোর্সের প্রয়োজন হয়, তখন সে API call-এর মাধ্যমে সার্ভারের সাথে যোগাযোগ করে৷ সার্ভার তারপর একটি স্ট্যান্ডার্ডাইজ প্রেজেন্টেশনে সেই রিসোর্সটির বর্তমান স্টেট প্রদান করে। একটি REST API ব্যবহার মূলত সার্ভারে HTTP রিকুয়েস্ট পাঠানো এবং রেসপন্স রিসিভ করার কাজের সাথে সম্পর্কিত।  এক্ষেত্রে আপনার যেভাবে Rest API ব্যবহার করবেন- আপনি API-তে যে রিসোর্সের সাথে ইন্টারঅ্যাক্ট করতে চান সেটি সিলেক্ট করতে হবে। সঠিক নির্দেশনা মেনে আপনি যে কাজটি করতে চান সে অনুযায়ী উপযুক্ত HTTP পদ্ধতি (GET, POST, PUT, DELETE, ইত্যাদি) এবং রিসোর্স URI ব্যবহার করে সার্ভারে একটি HTTP রিকুয়েস্ট পাঠাতে হবে। আপনার HTTP রিকুয়েস্টের ফলে সার্ভার থেকে রেসপন্স পাবেন৷ সেক্ষেত্রে রেসপন্সটি JSON বা XML ফরম্যাটে থাকবে। প্রাপ্ত রেসপন্সের জন্য আপনাকে রেসপন্স পার্স করতে হবে, পার্স করার ফলে আপনি আপনার প্রয়োজনীয় তথ্য পেয়ে যাবেন। REST (রিপ্রেজেন্ট...

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

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