Hướng đối tượng trong PHP: Factory Pattern

Hướng đối tượng trong PHP: Factory Pattern

Một mẫu thiết kế phổ biến khác là mẫu factory. Mục đích chính của mẫu này là cung cấp một đối tượng bằng cách ẩn đi những sự phức tạp đằng sau nó, điều này có nghĩa là chúng ta có một số lớp phức tạp nào đó mà được sử dụng theo từng ngữ cãnh cụ thể chúng có thể có một số chức năng, thuộc tính thống nhất theo một mô hình nào đó, có thể là một số lớp cấu trúc từ một lớp abstract chẵng hạn, chúng ta sẽ kết hợp chúng lại để xử lý trong một lớp, mà ở đó mọi công việc xử lý được diễn ra và chỉ trả về những cái cần thiết, điều này giúp mô hình chặt chẽ và giễ dàng để sử dụng bởi vì tất cả những gì phức tạp đã được thực hiện trong lớp. Xem ví dụ sau để hiểu rõ điều này:

abstract class Capp{
    abstract function cMethod();
}
class Capp1 extends Capp{
    public function cMethod(){
        return 'Ban da goi '.__METHOD__;
    }
}
class Capp2 extends Capp{
    public function cMethod(){
        return 'Ban da goi '.__METHOD__;
    }
}
class CManager{
    const C1 = 1;
    const C2 = 2;
    private $mode;
    function __construct($mode=1){
        $this->mode = $mode;
    }
    public function getCapp(){
        switch($this->mode){
            case (CManager::C1):
                return new Capp1();
            case (CManager::C2):
                return new Capp2();
        }
    }
}
$s = new CManager(CManager::C1);
$Capp = $s->getCapp();
echo $Capp->cMethod();

Đây là ví dụ vệ việc sử dụng mẫu factory trong việc tạo ra đối tượng cụ thể trong một mô hình có một số lớp kế thừa từ lớp abstract, từ ví dụ trên ta thấy 2 lớp Capp1 Capp2 có lớp abstract Capp, điều quan trọng ở đây là chúng được khởi tạo đối tượng thông qua lớp CManager điều này rất có lợi cho bạn khi bạn có một hệ thống với số lượng lớp đồ sộ, như trên nếu muốn sử dụng lớp nào thì ta chỉ việc khởi tạo đối tượng từ lớp CManager cùng với khai báo tham số là hằng số tương ứng cho lớp mà bạn cần gọi.

Tham khảo "Object-Oriented Programming with PHP5 - Hasin Hayder,  PHP Objects, Patterns and Practice -  Matt Zandstra"

Bạn thấy bài viết này như thế nào?: 
Average: 10 (2 votes)
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
SEO web du lịch

SEO web du lịch : những kinh nghiệm hay

Làm thế nào để một DN nhỏ có thể Tối ưu website (SEO) lên trang đầu của Google trong thị trường cạnh tranh lớn như Du lịch với một ngân sách hạn chế ? Chắc sẽ có rất nhiều công ty, DN cần giải đáp về đề này. Hôm nay tôi sẽ giup các bạn định hướng cho website của mình để phát triển nó và tìm kiếm những khách hàng tiềm năng trên Máy tìm kiếm Google.

Tiện ích gỡ bỏ Timeline mới - Liệu có hiệu quả?

Tiện ích gỡ bỏ Timeline mới - Liệu có hiệu quả?

Phần mở rộng Timeline Remove mới cho trình duyệt có thể sẽ giúp bạn nói lời từ biệt với Timeline. Nhưng cẩn thận!

Đại học có phải con đường duy nhất dẫn đến thành công?

Đại học có phải con đường duy nhất dẫn đến thành công?

Đại đa số các bậc phụ huynh, nhà trường khi tư vấn, định hướng cho con em, học sinh về nấc thang kế tiếp của cuộc đời các em, đều chỉ có 1 đích đến mang tên “Đại học”

Công ty diệt chuột T&C

 

Diet con trung