1. Trang chủ
  2. » Luận Văn - Báo Cáo

từ biểu đồ thiết kế và bài toán giảng viên đưa ra hãy cài đặt đầy đủ nhất có thể cho bài toán thiết kế này bằng ngôn ngữ lập trình java

10 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

Chúng tôi cũng muốn cảm ơn những người bạn đã chia sẻ kiến thức, ý kiếnvà góp ý quý báu, giúp chúng tôi vượt qua những thách thức trong quá trìnhnghiên cứu và phát triển phần mềm.Không t

Trang 1

TRƯỜNG ĐẠI HỌC XÂY DỰNG HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN

0093667 Nguyễn Quang Nghĩa

Cài đặt Java 0003167 Hồ Sỹ Chinh

0073367 Đinh Bùi Nam

0162167 Cao Việt Linh Vẽ lại biểu đồ lớp4010067 Trịnh Ngọc Quang Tìm hiểu mẫu Observer

design pattern

Hà Nội, 24.02.2024

Trang 3

Chúng tôi cũng muốn cảm ơn những người bạn đã chia sẻ kiến thức, ý kiếnvà góp ý quý báu, giúp chúng tôi vượt qua những thách thức trong quá trìnhnghiên cứu và phát triển phần mềm.

Không thể không kể đến sự hỗ trợ từ gia đình và bạn bè, những người đãhiểu và ủng hộ chúng tôi suốt quá trình nghiên cứu Những lời động viên và sựhỗ trợ tinh thần từ họ đã đóng góp quan trọng vào sự thành công của chúng tôi.

Cuối cùng, chúng tôi xin bày tỏ lòng biết ơn sâu sắc đến tất cả những ngườiđã đồng hành và đóng góp vào hành trình nghiên cứu của chúng tôi.

Trang 4

I Mẫu Observer design pattern

1 Định nghĩa

Observer design pattern là một mẫu thiết kế phần mềm mà một đối tượng,gọi là subject, duy trì một danh sách các thành phần phụ thuộc nó, gọilà observer, và thông báo tới chúng một cách tự động về bất cứ thay đổi nào,thường thì bằng cách gọi 1 hàm của chúng.

2 Mục tiêu

Định nghĩa mối phụ thuộc một - nhiều giữa các đối tượng để khi mà một đốitượng có sự thay đổi trạng thái, tất các thành phần phụ thuộc của nó sẽ đượcthông báo và cập nhật một cách tự động.

Một đối tượng có thể thông báo đến một số lượng không giới hạn các đốitượng khác.

3 Ưu & nhược điểm

 Ưu điểm:

 Đảm bảo nguyên tắc Open/Closed Principle (OCP): Cho phép thayđổi Subject và Observer một cách độc lập Chúng ta có thể tái sử dụngcác Subject mà không cần tái sử dụng các Observer và ngược lại Nócho phép thêm Observer mà không sửa đổi Subject hoặc Observer khác.

 Thiết lập mối quan hệ giữa các objects trong thời gian chạy. Sự thay đổi trạng thái ở 1 đối tượng có thể được thông báo đến cácđối tượng khác mà không phải giữ chúng liên kết quá chặt chẽ.

 Không giới hạn số lượng Observer

Sử dụng Observer Patern khi chúng ta muốn:

 Sự thay đổi trạng thái ở 1 đối tượng cần được thông báo đến cácđối tượng khác mà không phải giữ chúng liên kết quá chặt chẽ.

Trang 5

 Cần mở rộng dự án với ít sự thay đổi nhất.

 Khi abstraction có 2 khía cạnh, cái này phụ thuộc cái kia Đóng góicác khía cạnh này trong các đối tượng khác nhau cho phép bạn thay đổivà tái sử dụng chúng độc lập.

 Khi thay đổi một đối tượng yêu cầu việc thay đổi đến các đối tượngkhác, và bạn không biết số lượng đối tượng cần thay đổi.

 Khi một đối tượng thông báo các đối tượng khác mà không cầnbiết đối tượng đó là gì hay nói cách khác là tránh tightly coupled.

5 Cấu trúc

 Subject :

o Là đối tượng chứa thông tin hoặc trạng thái cần được theo dõi.o Cung cấp các phương thức để thêm, xóa hoặc thông báo cho cácobservers khi trạng thái của nó thay đổi.

Trang 7

II Vẽ biểu đồ lớp cho thiết kế giảng viên đưa ra

Trang 8

III Cài đặt

* Click default.txt to change this license

nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.javato edit this template

package baitaplon;/**

* @author Admin*/

import java util ArrayList ;import java util List ;// Interface ISubjectinterface ISubject {

void attach(Observerobserver); void detach(Observerobserver); void notifyAllObserver();}

// Interface IObserverinterface Observer {

void update(DBvariableEvarDBe); void ConnectDB(DBvariableEvarDBe);}

// Class DBvariableEclass DBvariableE {

StringvarE;

publicDBvariableE(String varE) { this.varE =varE; }

// Class ConnectDB

classConnectDBimplementsISubject {

private final List Observer<> observers= newArrayList<>(); private DBvariableEvarDBe;

@Override

publicvoid attach(Observerobserver) { observers.add(observer);

Trang 9

} @Override

publicvoid detach(Observerobserver) { observers.remove(observer); }

@Override

publicvoid notifyAllObserver() { for (Observerobserver : observers) { observer.update(varDBe); }

}}}

// Class MySQLDBcon

classMySQLDBconimplementsObserver { @Override

publicvoid ConnectDB(DBvariableEvarDBe) {

System.out.println("Connecting to MySQL database "); }

@Override

publicvoid update(DBvariableEvarDBe) {

System.out.println("Updating MySQL database "); }

// Class SQLServerDBcon

classSQLServerDBconimplementsObserver { @Override

publicvoid ConnectDB(DBvariableEvarDBe) {

System.out.println("Connecting to SQL Server database "); }

Trang 10

publicvoid update(DBvariableEvarDBe) {

System.out.println("Updating SQL Server database "); }

// Class MongoDBcon

classMongoDBconimplementsObserver { @Override

publicvoid ConnectDB(DBvariableEvarDBe) {

System.out.println("Connecting to MongoDB database "); }

@Override

publicvoid update(DBvariableEvarDBe) {

System.out.println("Updating MongoDB database "); }

public classMain {

public staticvoid main(String[] args) { // Tạo một đố?i tượng ConnectDB ConnectDBconnectDB =new ConnectDB(); // Tạo các đố?i tượng Observer

MySQLDBconmySQLDBcon =new MySQLDBcon(); SQLServerDBconsqlServerDBcon =new SQLServerDBcon(); MongoDBconmongoDBcon =new MongoDBcon(); // Đăng ký các Observer với ConnectDB connectDB.attach(mySQLDBcon); connectDB.attach(sqlServerDBcon); connectDB.attach(mongoDBcon);

// Khi có sự thay đốKi trong mối trường biế?n, kế?t nố?i và cập

StringoldVarE ="oldValue";

(ifconnectDB.checkChangeVariableEnvironment(oldVarE)) { connectDB.connectToDB();

} else {

System.out.println("No change in variable environment Database connection not required."); }

}}

Ngày đăng: 20/05/2024, 15:54

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w