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

 
www.processing.org: Ngôn ngữ lập trình Processing

www.processing.org: Ngôn ngữ lập trình Processing

Processing là một ngôn ngữ lập trình hiện đại( ra đời năm 2001) cho phép lập trình các ứng dụng đồ họa trên môi trường Window, Linus, Mac Android và cả Web. Nếu bạn đã học C thì bạn có thể tự học Processing rất dễ dàng. Định dang một tập tin Processing là *pde

Hướng dẫn định dạng dữ liệu tốt hơn trong excel

Hướng dẫn định dạng dữ liệu tốt hơn trong excel

Một trong những việc mà người mới dùng Excel ngại nhất là định dạng dữ liệu, thường người dùng

Drupal 7 – Part 2: Deliver digital faster, ít rủi ro hơn

Drupal 7 – Part 2: Deliver digital faster, ít rủi ro hơn

I showed you some of the many examples of successful sites built rapidly thanks to Drupal’s modularity.

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

 

Diet con trung