✨Dạng thức bắc cầu

Dạng thức bắc cầu

Dạng thức bắc cầu (bridge pattern) là một dạng thức thiết kế được dùng trong công nghệ phần mềm.

Dạng thức bắc cầu dùng để "tách riêng tính trừu tượng ra khỏi thực thể của nó để cho cả hai có thể thay đổi một cách độc lập" (Gamma et. al.). Dạng thức bắc cầu dùng tính đóng gói, tính kết hợp, và có thể dùng tính kế thừa để tách riêng việc xử lý (trách nhiệm) giao cho từng lớp khác nhau.

Khi mà các lớp thường xuyên bị thay đổi, thì các đặc tính của lập trình hướng đối tượng trở nên rất hữu ích vì sự thay đổi ở các mã lệnh của chương trình có thể được thực hiện dễ dàng với ít công sức nhất trong việc tìm hiểu toàn bộ chương trình. Dạng thức bắc cầu rất hữu ích khi không chỉ bản thân lớp thay đổi thường xuyên mà ngay cả những công việc mà nó thực hiện cũng thay đổi. Bản thân lớp có thể được xem là một sự trừu tượng và những gì mà lớp đó có thể thực hiện là sự hiện thực.

Khi mà sự trừu tượng và sự hiện thực được tách riêng thì sự thay đổi của mỗi cái là không phụ thuộc nhau. Một ví dụ hay của dạng thức thiết kế bắc cầu trong tác phẩm Design Patterns Explained: A New Perspective on Object-Oriented Design của Shalloway và Trott. Giả sử bạn có một sự trừu tượng, đó là một shapes. Bạn muốn có nhiều loại shapes (i.e.: rectangle, triangle, circle...) và mỗi cái có các thuộc tính riêng nhưng có những điểm chung, đó là những điểm mà mọi shapes đều có thể có. Một trong chúng là mọi shapes có thể tự vẽ (draw) chúng. Tuy nhiên, việc vẽ các hình lên màn hình đôi khi phụ thuộc vào các hiện thực đồ họa (hình dáng của mỗi loại shape) khác nhau và hệ điều hành khác nhau. Bạn muốn các shapes của mình có thể thực hiện thao tác vẽ trên nhiều loại hệ thống nhưng nếu để cho shape tự xử lý toàn bộ hay phải chỉnh sửa từng shape class để phù hợp cho từng kiến trúc khác nhau là không thực tiễn. Dạng thức bắc cầu giúp cho bạn tạo ra các lớp mới có thể cung cấp hiện thực các tác vụ vẽ. Lớp trừu tượng, shape, cung cấp các phương thức để lấy các thông tin kích thước và thuộc tính của một shape trong khi lớp hiện thực, vẽ, cung cấp một giao diện cho các tác vụ vẽ. Bây giờ nếu shape mới cần được tạo ra (một hình bông tuyết chẳng hạn) hay nếu muốn có thể vẽ các hĩnh vẽ của bạn bằng các hàm đồ họa API mới thì chỉ việc thêm một lớp mới để xây dựng (implement) các đặc tính bạn cần.

Cấu trúc

Bridge Structure|Bridge Structure

  • Client ** Đối tượng cần dùng dạng thức bắc cầu
  • Abstraction định ra một abstract interface quản lý việc tham chiếu đến đối tượng hiện thực cụ thể (Implementor)
  • Refined Abstraction ** Mở rộng interface mà đã được định ra trong Abstraction
  • Implementor ** định ra các interface cho các lớp hiện thực. (Thông thường thì Abstraction interface định ra các tác vụ ở mức cao dựa trên các hiện thực của interface này.)
  • ConcreteImplementor ** hiện thực Implementor interface

Ví dụ

Java

Chương trình Java sau minh hoạ ví dụ "shapes" đã nói ở trên và đưa ra kết quả: API1.circle at 1.000000:2.000000 radius 7.500000 API2.circle at 5.000000:7.000000 radius 27.500000

/** "Implementor" */ interface DrawingAPI { public void drawCircle(double x, double y, double radius); }

/* "ConcreteImplementor" 1/2 / class DrawingAPI1 implements DrawingAPI { public void drawCircle(double x, double y, double radius) { System.out.printf("API1.circle at %f:%f radius %f\n", x, y, radius); } }

/* "ConcreteImplementor" 2/2 / class DrawingAPI2 implements DrawingAPI { public void drawCircle(double x, double y, double radius) { System.out.printf("API2.circle at %f:%f radius %f\n", x, y, radius); } }

/* "Abstraction" / interface Shape { public void draw(); // low-level public void resizeByPercentage(double pct); // high-level }

/* "Refined Abstraction" / class CircleShape implements Shape { private double x, y, radius; private DrawingAPI drawingAPI; public CircleShape(double x, double y, double radius, DrawingAPI drawingAPI) { this.x = x; this.y = y; this.radius = radius; this.drawingAPI = drawingAPI; }

// low-level i.e. Implementation specific public void draw() { drawingAPI.drawCircle(x, y, radius); }
// high-level i.e. Abstraction specific public void resizeByPercentage(double pct) { radius *= pct; } }

/* "Client" / class BridgePattern { public static void main(String[] args) { Shape[] shapes = new Shape[2]; shapes[0] = new CircleShape(1, 2, 3, new DrawingAPI1()); shapes[1] = new CircleShape(5, 7, 11, new DrawingAPI2());

   for (Shape shape: shapes) {
       shape.resizeByPercentage(2.5);
       shape.draw();
   }

} }

|

👁️ 0 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Dạng thức bắc cầu** (_bridge pattern_) là một dạng thức thiết kế được dùng trong công nghệ phần mềm. Dạng thức bắc cầu dùng để _"tách riêng tính trừu tượng ra khỏi thực thể của
**Bậc cầu thang** là phần ngang của một bộ cầu thang mà người ta đi bộ trên đó. Bậc cầu thang có thể được làm bằng gỗ, kim loại, nhựa hoặc các vật liệu khác.
Trong toán học, một quan hệ hai ngôi _R_ trên tập hợp _X_ được gọi là có tính **bắc cầu** (hay còn đựoc gọi là tính **chuyển tiếp**, tính **truyền ứng**) khi và chỉ khi
alt=Các nghiệm cảu một phương trình bấc hai|thumb|231x231px|Một phương trình bậc hai với các nghiệm _x_ = 1 và _x_ = 4. Trong đại số sơ cấp, **công thức bậc hai** là một công thức cung cấp (các) đáp
[[Phở - món ăn mang tính biểu tượng quốc tế của ẩm thực Việt Nam]] **Ẩm thực Việt Nam** là cách gọi của phương thức chế biến món ăn, nguyên lý pha trộn gia vị
thumb|**Cấu trúc protein** từ cấu trúc bậc 1 tới cấu trúc bậc 4. **Protein** (Protid hay Đạm) là những đại phân tử được cấu tạo theo nguyên tắc đa phân mà các đơn phân là
**Miền Bắc nước Anh** hay **Bắc Anh** () được xem là một khu vực văn hoá riêng. Khu vực trải dài từ biên giới với Scotland tại phía bắc đến gần sông Trent tại phía
**Nhu cầu** là một hiện tượng tâm lý của con người; là đòi hỏi, mong muốn, nguyện vọng của con người về vật chất và tinh thần để tồn tại và phát triển. Tùy theo
**Quả cầu than** là dạng kết hạch của những sinh vật có chứa nhiều calci. Vật thể này thường có hình dạng từ gần như hình cầu tới các phiến gần như phẳng. Cầu than
**Bắc Kinh** (; ), là thủ đô của nước Cộng hòa Nhân dân Trung Hoa. Thành phố nằm ở miền Hoa Bắc, và là một trong số bốn trực hạt thị của Trung Hoa, với
**Ẩm thực Trung Quốc** (, ) là một phần quan trọng của văn hóa Trung Quốc, bao gồm ẩm thực có nguồn gốc từ các khu vực đa dạng của Trung Quốc, cũng như từ
right|thumb|Kí hiệu tập hợp **số thực** (ℝ) Trong toán học, một **số thực** là một giá trị của một đại lượng liên tục có thể biểu thị một khoảng cách dọc theo một đường thẳng
**Thực vật có hoa**, còn gọi là **thực vật hạt kín** hay **thực vật bí tử** (danh pháp khoa học **Angiospermae** hoặc **Anthophyta** hay **Magnoliophyta**) là một nhóm chính của thực vật. Chúng tạo thành
**Gấu xám Bắc Mỹ** (tên khoa học **_Ursus arctos horribilis_**; tiếng Anh: **Grizzly bear**), còn được gọi là **gấu đầu bạc**, **gấu xám**, hoặc **gấu nâu Bắc Mỹ**, là một **_phân loài khác_** của gấu
phải|nhỏ| _[[Silene acaulis_, một loài thực vật đệm thuộc họ Cẩm chướng]] **Thực vật đệm** hay **thực vật dạng đệm** (tiếng Anh: _cushion plant_) là tên gọi chung của dạng sống thực vật nhỏ gọn,
**Hàm số bậc hai** là hàm số có dạng ax^2+bx+c=y trong đó a,b,c là các hằng số và {\displaystyle (a\neq 0)} . Hệ số hoàn toàn có thể ở y. x và y lần lượt
nhỏ|Cbmain Trong khoa học máy tính, một **ngôn ngữ lập trình bậc cao** (tiếng Anh: _high-level programming language_) là một ngôn ngữ lập trình có sự trừu tượng hóa mạnh mẽ khỏi các chi tiết
nhỏ|300x300px|Quốc lộ 1A (Cao tốc Bắc - Nam đoạn qua Thành phố Từ Sơn, Bắc Ninh) nhỏ|300x300px|
Cao tốc Bắc Ninh - Nội Bài **Giao thông Bắc Ninh** là tỉnh có hệ thống giao thông đa
nhỏ|Cầu vồng **Cầu vồng**, **mống**, **quang phổ** hay **rainbow** là hiện tượng tán sắc của ánh sáng từ Mặt Trời khi khúc xạ và phản xạ qua các giọt nước mưa. Ở nhiều nền văn
phải|thumb|Đồ thị của hàm số bậc 3 có 3 nghiệm với 3 lần cắt trục hoành. Trong đại số, một **phương trình bậc ba** có một biến là một biểu thức có dạng: : ax^3+bx^2+cx+d=0
thumb|Diễn giải của họa sĩ về người ngoài hành tinh Bắc Âu. Loại người ngoài hành tinh này được cho là cực kỳ giống con người. Con người ở bên phải được thể hiện để
Cảnh nhìn từ Malmö Cầu Oresund nối vào đảo nhân tạo Peberholm, ảnh chụp từ trên không Hình chụp từ vệ tinh nhân tạo [[Cầu dây văng Oresund]] **Cầu Øresund**, **Öresund** hay **Oresund** (tiếng Đan
phải|nhỏ|380x380px| Hệ thực vật núi cao tại Đèo Logan, [[Vườn quốc gia Glacier (Hoa Kỳ)|Vườn quốc gia Glacier, ở Montana, Hoa Kỳ: Thực vật núi cao là một nhóm được cho là rất dễ bị
**Câu lạc bộ bóng đá Sông Lam Nghệ An** (), trong văn nói thường được gọi là **Sông Lam Nghệ An** hay ngắn gọn hơn là **Sông Lam**, là một câu lạc bộ bóng đá
**Cầu lông** hay **vũ cầu** là môn thể thao dùng vợt thi đấu giữa 2 vận động viên (đấu đơn) hoặc 2 cặp vận động viên (đấu đôi) trên 2 nửa của sân cầu hình
Trong toán học, **đa thức** là biểu thức bao gồm các biến và các hệ số, và chỉ dùng các phép cộng, phép trừ, phép nhân, và lũy thừa với số mũ tự nhiên của
phải|[[Miền giá trị (_feasible region_) của một bài toán quy hoạch tuyến tính được xác định bởi một tập các bất đẳng thức]] Trong toán học, một **bất đẳng thức** (tiếng Anh: Inequality) là một
nhỏ|300x300px|[[Phở là món ăn đặc trưng cho ẩm thực Việt Nam]] **Ẩm thực** là một hệ thống đặc biệt về quan điểm truyền thống và thực hành nấu ăn, nghệ thuật bếp núc, nghệ thuật
**Thực vật hạt trần** hay **thực vật khỏa tử** (**_Gymnospermatophyta_**) là một nhóm thực vật có hạt chứa các hạt trên các cấu trúc tương tự như hình nón (còn gọi là quả nón, mặc
nhỏ|415x415px|Vùng trung du miền núi phía Bắc trên bản đồ Việt Nam (màu hồng nhạt) **Vùng trung du miền núi phía bắc**, trước năm 1954 còn gọi là **Trung du và thượng du**, là khu
**Đường sắt Bắc - Nam** hay **đường sắt Thống Nhất** là tuyến đường sắt bắt đầu từ thủ đô Hà Nội và kết thúc tại Thành phố Hồ Chí Minh. Đường sắt Bắc - Nam
**Hệ thống cầu máng Pontcysyllte** là một hệ thống cầu máng mang kênh Llangollen trên thung lũng trên sông Dee ở Wrexham County Borough, ở đông bắc Xứ Wales, Vương quốc Anh. Được hoàn thành
**Sinh lý học thực vật** là một phân ngành của thực vật học liên quan đến chức năng hoặc sinh lý của thực vật. Những chuyên ngành có liên quan mật thiết gồm có hình
**Thực tế** là tổng hợp của tất cả những gì có thật hoặc tồn tại trong một hệ thống, trái ngược với những gì chỉ là tưởng tượng. Thuật ngữ này cũng được sử dụng
**Thực vật** là những sinh vật nhân thực tạo nên giới **Plantae**; đa số chúng hoạt động nhờ quang hợp. Đây là quá trình mà chúng thu năng lượng từ ánh sáng Mặt Trời, sử
**Họ Linh cẩu** (**Hyaenidae**) (từ tiếng Hy Lạp cổ đại _ὕiatedνα_, hýaina) gồm các động vật có vú ăn thịt Dạng mèo. Chỉ 4 loài **linh cẩu** còn sinh tồn (trong 3 chi). Đây là
Chính phủ Bắc Triều Tiên đã tiến hành một vụ nổ hạt nhân vào ngày 3 tháng 9 năm 2017 tại Bãi thử hạt nhân Punggye-ri, khoảng về phía tây bắc của thành phố Kilju
nhỏ|phải nhỏ|phải|Một món ăn Đan Mạch **Ẩm thực Đan Mạch** (tiếng Đan Mạch: _det Danske køkken_), bắt nguồn từ các nông sản của cư dân địa phương, được chế biến bằng các kỹ thuật phát
**Quản lý tri thức cá nhân (PKM)** là tập hợp các quá trình mà một người sử dụng để thu thập, phân loại, lưu trữ, tìm kiếm và chia sẻ kiến thức trong các hoạt
**Duy thức tông** (zh. 唯識宗, sa. _vijñaptimātravādin_, _yogācārin_, _cittamātravādin_) là tên gọi tại Đông Nam Á của một trường phái Phật giáo. Tại Ấn Độ và Tây Tạng, tông này được gọi là Thức tông,
Yến mạch, đại mạch và một số sản phẩm từ hạt của chúng **Cây lương thực** là các loại cây trồng mà sản phẩm dùng làm lương thực cho người, nguồn cung cấp chính về
nhỏ|phải|Bánh mì Kifli trong ẩm thực Serbia **Ẩm thực châu Âu** (, _European cuisine_) hay **Ẩm thực phương Tây** là các món ăn của Châu Âu và các nước phương Tây khác, bao gồm các
**Ý thức hệ**, **ý hệ** hay **hệ tư tưởng** là một tập hợp các niềm tin hoặc triết lý được gán cho một người hoặc một nhóm người, đặc biệt là được tổ chức vì
nhỏ|phải|Một câu thủ đang bắt được một con [[cá vược]] **Câu cá vược** là việc thực hành câu các loài cá vược. Đây là một trong những trò câu cá giải trí phổ biến ở
nhỏ|đẳng thức Trong toán học, **đẳng thức** là mối quan hệ giữa hai đại lượng, hay tổng quát hơn, hai biểu thức, khẳng định rằng hai đại lượng hay giá trị đó bằng nhau, tức
**Cao Câu Ly** (; tiếng Hàn trung đại: 고ᇢ롕〮 Gowoyeliᴇ), (năm thành lập theo truyền thống là năm 37 trước Công nguyên, có lẽ thế kỷ thứ 2 trước Công nguyên – 668) là một
**Đài Bắc 101** () – hay **Taipei 101**, từng được gọi là **Trung tâm Tài chính Thế giới Đài Bắc** – là một tòa nhà cao tầng có tính dấu mốc tại quận Tín Nghĩa, Đài Bắc,
[[Tập tin:Rökstenen - KMB - 16000300014216.jpg|nhỏ|392.997x392.997px| Hòn đá Rök, trên khắc những ký tự của cổ ngữ Rune. Đặt ở Rök, Thụy Điển. ]] **Thần thoại Bắc Âu** bao gồm tôn giáo và tín ngưỡng
**Biểu diễn tri thức và suy luận** (**Knowledge representation and reasoning**, **KRR**, **KR&R**, **KR²**) là lĩnh vực của trí tuệ nhân tạo (AI) tập trung vào việc biểu diễn thông tin về thế giới dưới
**_Star Wars: Thần lực thức tỉnh_** (tên gốc tiếng Anh: **_Star Wars: The Force Awakens_**, hoặc **_Star Wars: Episode VII – The Force Awakens_**) là một bộ phim điện ảnh thuộc thể loại sử thi