Single Responsibility Principle(SRP)
এই নীতিটি বলে যে প্রতিটি ক্লাস বা উইজেটের একক দায়িত্ব থাকা উচিত। এটি জোর দেয় যে একটি ক্লাস বা উইজেট একটি নির্দিষ্ট ফাংশন সঞ্চালন করা উচিত এবং পরিবর্তন করার জন্য খুব বেশি কারণ নেই।
উদাহরণ: ব্যবহারকারীর তথ্য প্রদর্শনের জন্য একটি উইজেট এবং পোস্টগুলির একটি তালিকা প্রদর্শন করার জন্য একটি পৃথক উইজেট তৈরি করুন৷
class UserProfileWidget extends StatelessWidget {
// Logic to display user information
}
class PostListWidget extends StatelessWidget {
// Logic to display a list of posts
}
Open/Closed Principle(OCP)
এই নীতিটি বিদ্যমান কোড পরিবর্তন না করে নতুন কোড যোগ করে কার্যকারিতা প্রসারিত করতে উৎসাহিত করে।
উদাহরণ: একটি ই-কমার্স অ্যাপে বিভিন্ন ধরনের পণ্য প্রদর্শনের জন্য একটি উইজেট তৈরি করুন।
abstract class ProductWidget extends StatelessWidget {
// Common logic for displaying products
}
class ElectronicProductWidget extends ProductWidget {
// Logic to display electronic products
}
class ClothingProductWidget extends ProductWidget {
// Logic to display clothing products
}
Liskov Substitution Principle(LSP)
এই নীতিটি দাবি করে যে একটি প্রাপ্ত শ্রেণীর বস্তুগুলি প্রোগ্রামের সঠিকতাকে প্রভাবিত না করে বেস শ্রেণীর বস্তুর জন্য প্রতিস্থাপনযোগ্য হওয়া উচিত।
উদাহরণ: জ্যামিতিক আকারগুলি পরিচালনা করতে একটি উইজেট তৈরি করুন।
abstract class ShapeWidget extends StatelessWidget {
// Common logic for displaying shapes
}
class RectangleWidget extends ShapeWidget {
// Logic to display rectangles
}
class CircleWidget extends ShapeWidget {
// Logic to display circles
}
Interface Segregation Principle(ISP)
এই নীতিটি ক্লাস বা উইজেটগুলির প্রয়োজন নেই এমন পদ্ধতিগুলি প্রয়োগ করতে বাধ্য করা এড়াতে ইন্টারফেসগুলিকে ছোট ছোট করে ফেলার পরামর্শ দেয়।
উদাহরণ: ডেটা আপডেট এবং প্রদর্শনের জন্য ইন্টারফেস।
abstract class Updateable {
void update();
}
abstract class Displayable {
void display();
}
Dependency Inversion Principle(DIP)
এই নীতি নির্ভরতা পরিচালনা করার জন্য নির্ভরতা ইনজেকশন ব্যবহার করার পরামর্শ দেয়।
উদাহরণ: উইজেটগুলিতে নির্ভরতা পরিচালনা করতে নির্ভরতা ইনজেকশন ব্যবহার করুন।
class OrderProcessor {
final DBConnection _dbConnection;
final EmailService _emailService;
OrderProcessor(this._dbConnection, this._emailService);
}
মনে রাখবেন যে SOLID নীতিগুলি প্রয়োগ করা আপনার প্রকল্পের নির্দিষ্ট উদ্দেশ্য Flutter এবং আপনার বোঝার উপর ভিত্তি করে নমনীয়ভাবে করা উচিত SOLID । Flutter