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