Giới thiệu: Tại sao phần mềm kỹ thuật co giãn cần có mẫu yếu tố trừu tượng

Phần mềm kỹ thuật phải xử lý các thay đổi nhanh chóng trong các yêu cầu, nền tảng phần cứng và các thành phần. Dù bạn đang xây dựng các công cụ phân tích hữu hạn, hệ thống CAD, hoặc phần mềm điều khiển, hoặc cấu trúc của bạn phải hỗ trợ sự tích hợp không biên dịch của bộ nhạy mới, bộ xử lý, giải mã, hoặc UI, không tái tạo các thành phần chính. Theo mã [FLTT: 0] [FLT:], trình khách cụ thể xác, bạn có thể xác định, và duy trì khả năng xác định các sản phẩm có tính bền vững [FT: Một trong số các cấu hình bốn], một trong những mẫu thiết kế mới, được chứng minh là cách để sắp xếp lại các gia đình.

Trong bài này, chúng ta sẽ khám phá cấu trúc của mô hình, thực hiện một cách thực tế trong bối cảnh kỹ thuật, và thảo luận khi nào nên áp dụng (và khi nào cần tránh quá trình kỹ thuật).

Hiểu được gương mẫu về sự phân biệt

Định nghĩa lõi

Mẫu Nhà máy Trừu Đại cung cấp một giao diện để tạo ra các gia đình có các đối tượng liên quan hoặc phụ thuộc mà không cần xác định lớp học cụ thể của họ. Nó phụ thuộc vào sự trừu tượng để một nhà máy sản xuất nhiều loại sản phẩm được thiết kế để làm việc cùng nhau. Các mẫu liên quan đến những người tham gia khóa:

  • AbstractFacry ) — tuyên bố một bộ phương pháp sáng tạo, mỗi người cho mỗi sản phẩm.
  • Concctory ) — thực hiện các phương pháp sáng tạo để sản xuất bê tông cho một biến thể cụ thể (v.: “Các phương pháp này có thể được dùng để tạo ra một nền tảng cụ thể.
  • AbstractProccut ) — phát hành giao diện cho một loại sản phẩm (e.g., it it.).
  • ConctricProct ) — định nghĩa một sản phẩm do Conccctory tương ứng tạo ra.
  • - trình bày — chỉ dùng giao diện trừu tượng và ngữ nghĩa tự giới.

Cách hoạt động

Mã trình khách nhận được một ví dụ về tính chất tương thích của hệ thống ảo (thường được tiêm qua cấu hình hoặc chọn thời gian). Nó gọi phương pháp sáng tạo của nhà máy mà không cần biết nhà máy bê tông nào tạo ra chúng. Những vật cụ thể này được đảm bảo là tương thích với nhau vì chúng có cùng một họ. Tính chất này đặc biệt có giá trị khi hệ thống kỹ thuật của bạn có nhiều biến thể (v. d., bản sửa đổi phần cứng khác nhau, mô phỏng vật lý khác nhau) cần phải phù hợp bên trong.

Chẳng hạn, trong một hệ thống thu thập dữ liệu kỹ thuật, một “bộ phận cảm biến cao cấp có thể sản xuất cả bộ cảm biến tần số cao và bộ kích hoạt nhanh tương ứng với bộ phận kích hoạt; một bộ phận kích hoạt điện tử “LowPowerFactory fectory ” (bộ cảm biến tần suất thấp) và bộ phận cảm biến hành động năng lượng thấp.

Lợi ích cho phần mềm kỹ thuật

Mẫu hình nhà máy trừu tượng cho chúng ta nhiều lợi thế trực tiếp đối phó với những thách thức của hệ thống kỹ thuật:

  • Khả năng ): trao đổi toàn bộ gia đình thành phần bằng cách thay đổi nhà máy nào bạn sử dụng. Lý tưởng là hỗ trợ nhiều nền tảng phần cứng, cơ chế mô phỏng, hoặc máy i công cụ UI mà không cần liên quan đến logic kinh doanh.
  • Khả năng ): để thêm một họ mới (v., hỗ trợ một nhãn hiệu cảm biến mới), bạn chỉ cần thực hiện một nhà máy bê tông mới và sản phẩm của nó. Mã xác định vẫn chưa được sửa đổi, theo nguyên tắc Open/Closed.
  • [FLT: 0] Khả năng phục hồi [FLT: 1]]: tạo vật đối tượng được tập trung. Khi một thay đổi xây dựng ký hiệu, bạn cập nhật chỉ nhà máy tương ứng, không phải nơi nào có thể làm cho lớp học được.
  • Trong các bài kiểm tra đơn vị, bạn có thể cung cấp một nhà máy sản xuất các thành phần phân hủy. Mã khách hàng không thay đổi, làm cho các cuộc kiểm tra nhanh hơn và đáng tin cậy hơn.
  • [FLT: 0] Tính năng Mở rộng ): phần mềm kỹ thuật thường phải chạy trên hệ điều hành khác hoặc cấu hình phần cứng. Tính năng trừu tượng cho phép bạn tạo hộp thoại UI cụ thể, lớp truy cập tập tin, hoặc xếp chồng dưới giao diện chung.

Làm gương tốt trong việc thực hành

Sự tăng dần dần

Để áp dụng mô hình Nhà máy trừu tượng cho phần mềm kỹ thuật của bạn, hãy theo những bước sau:

  1. Hãy xác định các gia đình ) — xác định nhóm các vật thể cần dùng chung. Trong công cụ phân tích cấu trúc, bạn có thể ), , và như một gia đình trên mỗi miền (v. d. tĩnh v. không tuyến tính).
  2. Giao diện sản phẩm trừu tượng ) — tạo một giao diện cho mỗi loại sản phẩm. Ví dụ: , , [FLT: 7).
  3. Giao diện nhà máy trừu tượng ) — Phát âm các phương pháp để tạo ra mỗi sản phẩm: , , .
  4. Các nhà máy bê tông ) — Đối với mỗi gia đình (v., và , cung cấp các phương pháp cụ thể để thực hiện các phương pháp cung cấp các lớp sản xuất cụ thể thích hợp.
  5. Cấu hình ứng dụng khách ) — Ứng dụng khách nhận một ví dụ về việc tiêm phụ thuộc trừu tượng (từvia, tập tin cấu hình, hoặc một quyết định chạy đơn giản).

Ví dụ: Gia đình quyết định

Hãy tưởng tượng bạn đang xây dựng một nền tảng phân tích yếu tố đa cơ giới hạn.

// Abstract products
interface ISolver {
 void Solve();
}
interface IMeshGenerator {
 Mesh Generate();
}

// Abstract factory
interface ISolverFactory {
 IMeshGenerator CreateMeshGenerator();
 ISolver CreateSolver();
}

// Concrete factory for linear static analysis
class LinearStaticFactory : ISolverFactory {
 IMeshGenerator CreateMeshGenerator() => new LinearStaticMeshGen();
 ISolver CreateSolver() => new DirectSolver();
}

// Concrete factory for nonlinear dynamic analysis
class NonlinearDynamicFactory : ISolverFactory {
 IMeshGenerator CreateMeshGenerator() => new NonlinearMeshGen();
 ISolver CreateSolver() => new IterativeSolver();
}

// Client code
class AnalysisEngine {
 private ISolverFactory factory;
 public AnalysisEngine(ISolverFactory factory) {
 this.factory = factory;
 }
 public void Run() {
 var mesh = factory.CreateMeshGenerator().Generate();
 var solver = factory.CreateSolver();
 solver.Solve();
 }
}

Bây giờ, để chuyển đổi các loại phân tích, bạn chỉ đơn giản là tạo ra động cơ với một nhà máy khác — không có thay đổi mã số nào khác.

Tình huống thế giới thực: Trừu tượng phần cứng cho hệ thống nhúng

Hãy xem một nhóm kỹ sư phát triển phần mềm để chế tạo máy bay không người lái tự động. Bộ điều khiển máy bay phải hỗ trợ nhiều bộ phận cảm biến (GPS, IMU, đo độ dài) và bộ kích hoạt (ESC, phục vụ). Mỗi phần cứng được chỉnh sửa sử dụng giao thức liên lạc khác nhau (I2C, SPI, UAT). Bộ phận sinh học cho phép phần mềm di động qua các biến thể máy bay không người lái.

Nhà máy trừu tượng định nghĩa các phương pháp như , , . Các nhà máy phân tích như và sản xuất các sản phẩm bê tông nói chuyện với phần cứng thật. Mã điều khiển máy bay chỉ phụ thuộc vào giao diện trừu tượng. Nếu một bản sửa đổi cảm biến mới đến, một nhà máy mới được thêm vào việc không thay đổi các thuật toán bay. Việc này giảm đáng kể các phép thử và nỗ lực tích hợp.

Những hình ảnh trừu tượng như thế cũng có giá trị cho việc thử nghiệm đơn vị — bạn có thể tiêm vào một nhà máy giả lập để có thể dùng lại những số liệu cảm biến giả, giúp sự kết hợp liên tục mà không cần phần cứng.

So sánh với những gương liên quan

Phương pháp nhà máy trừu tượng chống lại nhà máy

Phương pháp [FLT: 0] [FLT:] Phương pháp xử lý dùng một phương pháp (thường ảo) để tạo ra một loại sản phẩm, đơn giản hơn nhưng hoạt động cho một sản phẩm. Nhà máy phân biệt đối xử nhiều sản phẩm liên quan và đảm bảo chúng thích hợp. Hãy dùng phương pháp iraly khi bạn cần chỉ một biến thể sản phẩm; hãy sử dụng yếu tố trừu tượng khi bạn có gia đình phải dùng chung với nhau.

Nhà máy tính trừu tượng vs. Xây dựng

Người xây dựng Mô hình cấu trúc tập trung vào việc xây dựng một vật thể phức tạp từng bước, thường với một giám đốc điều khiển tiến trình xây dựng. Người xây dựng là lý tưởng khi sản phẩm đòi hỏi nhiều bước (v.v. việc lắp ráp một mô hình CD). Nhà máy Trừ học trực tiếp gửi sản phẩm về, thường là hoàn thành.

Hệ số trừu tượng và độ tương thích trong tiến trình lọc (DI)

Hộp đựng đồ (v. d., Spring, NET CN) thường dùng mẫu yếu tố trừu tượng dưới nắp tủ. Bạn có thể đăng ký các nhà máy bê tông trong container và để cho vật chứa giải quyết chúng.

Những thực hành tốt nhất và cạm bẫy

Khi nào nên dùng yếu tố trừu tượng

  • Hệ thống của bạn cần phải được độc lập với cách sản phẩm được tạo ra, cấu tạo, hoặc đại diện cho nó.
  • Bạn dự đoán nhiều gia đình sản phẩm sẽ được dùng cùng nhau.
  • Bạn muốn áp dụng sự nhất quán giữa các biến thể sản phẩm.

Những cạm bẫy chung

  • Vượt qua ) ): thêm các nhà máy cho mỗi biến thể nhỏ dẫn đến sự phức tạp không cần thiết. Hãy đánh giá nếu bạn thực sự có nhiều gia đình sản phẩm thay đổi cùng nhau.
  • Quá nhiều loại sản phẩm ): nếu giao diện máy ảo của bạn lớn (v. d., 10+ phương pháp), hãy xem xét việc chia thành các nhà máy nhỏ hơn hoặc sử dụng phương pháp đăng ký.
  • Trong hiệu suất thực hiện hệ thống nhúng phụ, các hệ thống thêm đổi hướng có thể là vấn đề. Trong trường hợp như vậy, sử dụng đa dạng thời gian biên dịch (t suất/ hậu phân loại) nếu ngôn ngữ cho phép, hoặc hồ sơ cẩn thận.

Kết luận

Mẫu tỉ mỉ là một cách được chứng minh để xây dựng phần mềm kỹ thuật có thể nhân rộng, bảo trì được mà phải hỗ trợ nhiều gia đình thành phần. Bằng cách kích hoạt vật thể tạo ra, bạn giải phóng các thuật toán cơ bản từ các chi tiết riêng biệt nền tảng, cho phép mở rộng dễ dàng, kiểm tra và thích nghi. Dù bạn đang thiết kế một mô phỏng đa vật lý đa cơ bản, một lớp trừu tượng phần cứng cho máy bay, hoặc một ứng dụng đa chiều, yếu tố mô phỏng tạo ra một cấu trúc rõ ràng cho các đối tượng. Kết hợp nó với các hoạt động phụ thuộc tốt và bạn có một cấu trúc tiến hóa với yêu cầu kỹ thuật.

Để nghiên cứu thêm, hãy nhắc đến mục nhập [FLT:] ), tính chất chắc chắn [FLT:] hướng dẫn , hoặc một lặn sâu vào mục [FLT] bộ sưu tập [FLT: 1]; hãy áp dụng mẫu Hiến pháp [FLT: 5. và phần mềm kỹ thuật của bạn sẽ sẵn sàng cho những thử thách ngày mai.