06/04/2021, 14:47

Composite Pattern trong Java - Cách triển khai và ví dụ - Design Pattern trong Java

Trong bài này chúng ta sẽ cùng tìm hiểu về Composite Pattern trong Java. Đây là một trong các Design Patern thuộc nhóm Structural Patern. Ở đây chúng ta sẽ tìm hiểu các khái niềm về Composite Pattern và cách triển khai thông qua chương trình đơn giản.trong Java. ...

Trong bài này chúng ta sẽ cùng tìm hiểu về Composite Pattern trong Java. Đây là một trong các Design Patern thuộc nhóm Structural Patern.

Ở đây chúng ta sẽ tìm hiểu các khái niềm về Composite Pattern và cách triển khai thông qua chương trình đơn giản.trong Java.

Composite Pattern là gì?

Composite Pattern được sử dụng khi chúng ta cần xử lý một nhóm các object tương tự như cách xử lý một object.

Điều này thường được thực hiện bới class “owns” của object và cung cấp một tập hợp các phương thức để xử lý chúng như thể xử lý một object.

Chương trình đơn giản với Composite Patern.

Chúng ta sẽ bắt đầu với class Employee.Class này được khởi tạo nhiều lần để tạo thành một nhóm nhân viên.

Trong class này chúng ta cần khai báo các thuộc tính dưới dạng private(đóng gói). Sau đó khởi tạo constructor chứa các tham số là các thuộc tính

Cuối cùng cùng ta khởi tạo các Getter và Setter và một phương thức Tostring để ghi đè kết quả ra màn hình.

Employee.java
import java.util.ArrayList;
import java.util.List;

public class Employee {
    private String name;
    private String position;
    private int wage;
    private List<Employee> coworkers;

    public Employee(String name, String position, int wage) {
        this.name = name;
        this.position = position;
        this.wage = wage;
        coworkers = new ArrayList<Employee>();
    }

    public void addCoworker(Employee employee) {
        coworkers.add(employee);
    }

    public void removeCoworker(Employee employee) {
        coworkers.remove(employee);
    }

    public List<Employee> getCoworkers() {
        return coworkers;
    }

    public String toString() {
        return "Nhân viên : | Tên: " + name + ", Chức vụ: " + position + ", Tiền lương: "
                + wage + "$ |";
    }
}

Trong class này chúng ta sẽ tạo một danh sách các nhân viên, đây là nhóm object mà chúng ta cần xử lý giống như dưới dạng một object.

Mỗi nhân viên sẽ có các thông tin như: Tên, chức vụ và tiền lương.

CompositePattern.java
public class CompositePattern {
    public static void main(String[] args) {
        Employee employee1 = new Employee("Tiến", "Programmer", 1500);
        Employee employee2 = new Employee("Quyền", "CEO", 3000);
        Employee employee3 = new Employee("Thành", "Manager", 2000);
        Employee employee4 = new Employee("Hùng", "Janitor", 500);
        Employee employee5 = new Employee("Hường", "Marketing", 1000);
        Employee employee6 = new Employee("Việt", "Sales", 2000);
        Employee employee7 = new Employee("Hòa", "Programmer", 1750);
        Employee employee8 = new Employee("Sơn", "Programmer", 1200);

        employee3.addCoworker(employee1);
        employee3.addCoworker(employee7);
        employee3.addCoworker(employee8);

        employee1.addCoworker(employee7);
        employee1.addCoworker(employee8);

        employee2.addCoworker(employee3);
        employee2.addCoworker(employee5);
        employee2.addCoworker(employee6);

        System.out.println(employee2);
        for (Employee headEmployee : employee2.getCoworkers()) {
            System.out.println(headEmployee);

            for(Employee employee : headEmployee.getCoworkers()) {
                System.out.println(employee);
            }
        }
        System.out.println("-----------------------------");
        System.out.println("Chương trình này được đăng tại Zaidap.com.net");
    }
}

Chúng ta sẽ sử dụng phương thức addCoworker để thêm các đồng nghiệp cho nhân viên sau đó hiển thị tất cả các nhân viên đó ra màn hình.

Kết quả sau khi chạy chương trình:

composite pattern JPG

Như vậy là chúng ta đã thực hiện xong chương trình đơn giản với Composite Pattern trong Java. Qua hướng dẫn này mình hy vọng sẽ giúp các bạn hiểu hơn về pattern này. Chúc các bạn thực hiện thành công!!!

Trần Trung Dũng

15 chủ đề

2610 bài viết

Cùng chủ đề
0