- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
保持类松散耦合是编写易于理解、修改和调试的代码的一个重要方面——我明白这一点。然而,作为一个新手,几乎任何时候我都会超越我所苦苦挣扎的最简单的例子。
我或多或少地了解如何将字符串、整数和简单数据类型封装在它们自己的类中。然而,当我开始处理诸如富文本格式之类的信息时,事情变得非常复杂——除非我只使用组件中已经存在的各种方法。继续这个例子,假设我正在编写一些在 UI 中包含 RTF 备忘录组件的东西。在 Delphi 中,该组件具有用于执行诸如保存格式化文本之类的内置方法。此外,有时似乎唯一(或至少是最好的)处理 RTF 文本本身的方法是通过再次内置到组件中的方法。
当我已经有一个组件可以为我完成所有这些工作时,我将如何(或为什么)在另一个类中完成保存、加载和格式化文本的所有工作?
就我自己而言,我通常最终要么 (a) 做一些看起来比需要复杂得多的事情,重新发明已经存在的方法,或者 (b) 创建仍然彼此紧密耦合的糟糕的类。正如他们在非正式广告中所说的那样,“必须有更好的方法!”
我只是在概念上迷失了“更好的方式”是如何工作的。有什么想法吗?
1 Câu trả lời
我相信你错过了一些基本概念。
OOP 背后的理念从离散的、可重用的逻辑单元开始。强调创建自给自足的模块。
对于 RTF 备忘录组件,它通过处理给定的一组数据(备忘录)来满足上述标准,这样您的程序和程序中的其他对象就不会关心它是如何工作的。它的目的是显示一个界面,接受数据,操作该特定数据,并将该数据传递给程序的另一部分。
loosely coupled 背后的理念只是你可以用另一个满足相同接口(interface)规范的控件替换那个备忘录控件。也就是说,您可以实例化它,让用户与之交互,并在必要时提取数据。
松散耦合与 的想法齐头并进Separation of Concerns (系统级);这是将程序分解为不同功能以减少重叠功能并使管理更容易的过程。但它们不是一回事。顺便说一句,这也是从程序化编程风格转向 OOP 背后的主要驱动力之一。由于 OOP 迫使编程根据相关和离散的功能进行思考。
听起来你真的在问 SoC。
实现SoC的方法有很多。有时它涉及将 UI、处理逻辑和持久层分开(例如,考虑 MVC 设计模式)。有时只是将相关功能放在一起以降低复杂性; RTF 控件已经通过包含操作数据所需的所有函数来实现这一点,这样您就没有进一步的依赖关系。
关于oop - 初学者的松散耦合和 OO 实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/690869/
Bài viết này được chia sẻ từ Cộng đồng đám mây Huawei "Đào tạo phân tán các mô hình lớn LLM", tác giả: 码上开花_Lancer. Với sự phát triển nhanh chóng của các tham số mô hình ngôn ngữ và lượng dữ liệu đào tạo cần thiết, các tài nguyên hạn chế trên một máy duy nhất không còn có thể đáp ứng được các yêu cầu đào tạo mô hình ngôn ngữ quy mô lớn. Cần thiết kế đào tạo phân tán
Bài viết này được chia sẻ từ Cộng đồng đám mây Huawei "Năm thuật toán cơ bản - Lập trình động", tác giả: Dajin (Nội Mông). 1. Các khái niệm cơ bản Lập trình động rất giống với phương pháp chia để trị. Sự khác biệt là khi giải một bài toán con, lời giải của bài toán con đó sẽ được lưu lại, còn khi giải các bài toán con tiếp theo thì có thể sử dụng trực tiếp.
pip install scp pip install pexpect Mã kiểm tra: import os import stat import paramiko # Được sử dụng để gọi lệnh scp def s
Hiện tại tôi đang triển khai dịch vụ REST "mã thông báo". Mã thông báo chỉ là một chuỗi, được xây dựng từ một số tham số, sau đó được băm và hết hạn sau một khoảng thời gian nhất định. Tôi muốn có một điểm cuối trong dịch vụ REST của mình có thể xác thực mã thông báo.
Khi bật tính năng xóa mềm, tôi thêm một bản ghi vào máy khách, đẩy, xóa bản ghi đã thêm bằng cách đẩy, sau đó thử thêm một bản ghi mới có cùng khóa chính với bản ghi ban đầu (và sau đó đẩy), tôi nhận được một ngoại lệ. Quản lý tên miền thực thể
Khi bật tính năng xóa mềm, tôi thêm một bản ghi vào máy khách, đẩy, xóa bản ghi đã thêm bằng cách đẩy, sau đó thử thêm một bản ghi mới có cùng khóa chính với bản ghi ban đầu (và sau đó đẩy), tôi nhận được một ngoại lệ. Quản lý tên miền thực thể
Tôi có một ứng dụng nhận thông tin thời tiết cứ x giây một lần. Tôi muốn lưu dữ liệu này vào một tệp XML. Tôi có nên tạo một tệp XML mới cho mỗi thông báo thời tiết hay thêm mỗi thông báo vào cùng một tệp XML không? Tôi không chắc chắn về tiêu chuẩn XML
Tôi đoán hầu hết chúng ta đều phải đối mặt với vấn đề này vào một thời điểm nào đó, vì vậy tôi nghĩ mình nên đặt câu hỏi. Khi bạn có nhiều bộ sưu tập trong BLL của mình và bạn thấy mình đang viết đi viết lại các thuật ngữ nội tuyến cũ (ẩn danh), thì việc đóng gói rõ ràng là cần thiết, nhưng cách tốt nhất để đạt được điều đó là
Tôi có một số mã C# đã chạy tốt trong một thời gian rồi... và tôi phải nói rằng, mặc dù tôi hiểu những nguyên tắc cơ bản của OO, nhưng rõ ràng có nhiều cách để giải quyết vấn đề (mặc dù tôi ghét cụm từ đó!). Vì vậy, tôi có một lớp trừu tượng cơ sở làm lớp dịch vụ dữ liệu cơ sở như sau
Tôi đang thiết kế một hệ thống cơ sở dữ liệu SQL (sử dụng Postgre) và tôi có một câu hỏi về phương pháp chung để tạo mối quan hệ/tham chiếu vẫn tồn tại ngay cả khi đối tượng được tham chiếu bị xóa. Ví dụ, có một UserORM và một Act
Mục tiêu của chúng tôi là tìm kiếm chuỗi ký tự do người dùng nhập vào và đếm xem có bao nhiêu nguyên âm trong đó. Thật không may là tôi bị kẹt ở đây, có ai giúp tôi không? def numVowels(s): nguyên âm = "AEIOUaeiou" nếu s
Tôi có một hàm xoay hoạt động trên mảng int "items" của tôi. Đoạn mã bên dưới thực hiện được điều đó, ngoại trừ việc tôi chuyển các giá trị không cần thiết. Tôi đang cố gắng thực hiện phép xoay "tại chỗ". Ý tôi là các ptrs được tăng hoặc giảm chứ không lấy giá trị từ mảng. Tôi cần phương pháp này
Tôi có một tệp json được lưu trữ trong thư mục tài liệu ứng dụng và tôi cần sử dụng nó trong tất cả các Chế độ xem của mình. Tôi đang tải json và thêm nó vào NSMutableArray trong mỗi View. Nhưng bây giờ tôi biết rằng tôi có thể
Tôi đã bắt đầu một dự án bằng C++. Quản lý bộ nhớ trong ngôn ngữ này là điều mới mẻ với tôi. Tôi từng tạo các đối tượng bằng new() rồi truyền con trỏ xung quanh, và mặc dù nó hoạt động, nhưng việc gỡ lỗi rất khó khăn và mọi người nhìn tôi với ánh mắt lạ khi họ nhìn thấy mã. Tôi không có nó cho
Hoàn thành. Câu hỏi này không liên quan đến chủ đề. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Cập nhật câu hỏi để phù hợp với chủ đề trên Stack Overflow. Đã đóng cửa 10 năm trước. Cải thiện điều này
Việc giữ các lớp được kết nối lỏng lẻo là một khía cạnh quan trọng của việc viết mã dễ hiểu, dễ sửa đổi và dễ gỡ lỗi - Tôi hiểu điều đó. Tuy nhiên, là người mới, hầu như lúc nào tôi cũng phải vượt ra ngoài ví dụ đơn giản nhất mà tôi đang gặp khó khăn. Tôi ít nhiều hiểu cách đóng gói chuỗi, số nguyên và các kiểu dữ liệu đơn giản.
Tôi thấy rằng mình cần phải viết rất nhiều mã trùng lặp vì tôi không thể gọi các hàm từ các Bộ điều khiển khác. Ví dụ, ở đây nội dung nguồn cấp tin tức được lặp lại trong mã của tôi và tôi thực hiện một số thao tác cụ thể cho một Bộ điều khiển sau đó cần tải nguồn cấp tin tức của tôi như thế này
Giả sử bạn cần một kiểu dữ liệu số có các giá trị được phép nằm trong một phạm vi xác định. Cụ thể hơn, giả sử bạn muốn định nghĩa một kiểu số nguyên có giá trị nhỏ nhất là 0 và giá trị lớn nhất là 5000. Tình huống này phát sinh trong nhiều trường hợp, ví dụ như khi mô hình hóa các kiểu dữ liệu cơ sở dữ liệu, các kiểu dữ liệu XSD. hiện hữu
Giả sử tôi muốn lặp qua mảng để truy cập vào từng phần tử. Có phải thông lệ chuẩn đối với các nhà phát triển JavaScript là sử dụng vòng lặp for, vòng lặp for...in hay vòng lặp for...of không? Ví dụ: var myArray = ["app
Tôi có một ứng dụng SL4/ria cũ mà tôi muốn thay thế bằng Breeze. Tôi có một câu hỏi liên quan đến việc sử dụng bộ nhớ và lưu trữ đệm. Ứng dụng của tôi tải danh sách các công việc (một người dùng thông thường có thể truy cập vào khoảng 1.000 công việc trong số này). Ngoài ra, còn có rất nhiều
Tôi là một lập trình viên xuất sắc, rất giỏi!