Các Design Pattern Thông Dụng Trong Java

By Minh on Feb 2, 2020
Image post 5

Giới thiệu về Design Pattern

Design pattern là những giải pháp đã được chứng minh cho các vấn đề thường gặp trong quá trình phát triển phần mềm. Chúng giúp các lập trình viên giải quyết các vấn đề thiết kế một cách hiệu quả và dễ dàng hơn.

Các Design Pattern Thông Dụng Trong Java

Dưới đây là một số design pattern phổ biến trong Java:

1. Singleton Pattern

Singleton Pattern đảm bảo rằng một lớp chỉ có một thể hiện duy nhất và cung cấp một điểm truy cập toàn cục đến nó. Điều này thường được sử dụng trong các trường hợp như quản lý kết nối cơ sở dữ liệu.

public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

2. Factory Pattern

Factory Pattern cung cấp một giao diện để tạo đối tượng trong một lớp con mà không cần chỉ định lớp cụ thể. Điều này giúp giảm độ phụ thuộc giữa các lớp.

public interface Product {
    void use();
}

public class ConcreteProductA implements Product {
    @Override
    public void use() {
        System.out.println("Using Product A");
    }
}

public class ConcreteProductB implements Product {
    @Override
    public void use() {
        System.out.println("Using Product B");
    }
}

public class ProductFactory {
    public static Product createProduct(String type) {
        if ("A".equals(type)) {
            return new ConcreteProductA();
        } else if ("B".equals(type)) {
            return new ConcreteProductB();
        }
        return null;
    }
}

3. Observer Pattern

Observer Pattern cho phép một đối tượng (subject) thông báo cho các đối tượng khác (observers) khi có sự thay đổi. Điều này thường được sử dụng trong các ứng dụng GUI hoặc hệ thống thông báo.

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

public class Subject {
    private List<Observer> observers = new ArrayList<>();

    public void attach(Observer observer) {
        observers.add(observer);
    }

    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}

public interface Observer {
    void update();
}

4. Strategy Pattern

Strategy Pattern cho phép định nghĩa một họ các thuật toán, đóng gói chúng và làm cho chúng có thể thay thế cho nhau. Điều này giúp thay đổi hành vi của một đối tượng mà không cần thay đổi mã nguồn.

public interface Strategy {
    int doOperation(int num1, int num2);
}

public class OperationAdd implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 + num2;
    }
}

public class OperationSubstract implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 - num2;
    }
}

public class Context {
    private Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public int executeStrategy(int num1, int num2) {
        return strategy.doOperation(num1, num2);
    }
}

Kết luận

Việc áp dụng các design pattern trong Java không chỉ giúp tăng cường khả năng bảo trì và mở rộng của ứng dụng mà còn giúp lập trình viên có thể giải quyết các vấn đề một cách dễ dàng và hiệu quả hơn. Hãy nghiên cứu và áp dụng chúng vào các dự án của bạn để nâng cao chất lượng phần mềm

contact me

  • Email: nguyenkhaminh9c@gmail.com
  • phone: 0373254600

© Copyright 2024 by Nguyễn Khả Minh.