- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
解决此类问题的规范 C++ 设计模式是什么?
我有一些共享多个类的多线程服务器。我需要为大多数类提供各种运行时参数(例如服务器名称、日志记录级别)。
在下面的伪 C++ 代码中,我使用了一个日志记录类的参数作为一个例子,但可能还有其他值需要在各种对象中访问。
特别是,Thread 对象需要有自己的日志类实例以避免损坏。
我可以将运行时参数设置为全局参数或静态参数,但它们似乎都有代码味道。同样,单例或将值传递给许多构造函数或初始值设定项似乎不是最优的或违反得墨忒耳法则。
Server 类(如下)中的 Thread 类目前我无法更改,尽管它可能会妨碍一些更优雅的事情。 :-/
请原谅下面的快速和肮脏的 C++ 代码;希望它能充分说明问题。
// p1.cpp
int main(int argc, char** argv) {
Log log(level, "p1");
Driver driver;
driver.exec(new p1Factory());
}
// p2.cpp
int main(int argc, char** argv) {
Log log(level, "p2");
Driver driver;
driver.exec(new p2Factory());
}
// p3 ... p7.cpp same as above
class Driver {
công cộng:
Driver() {}
void exec(GenericFactory * f) { factory = f; server.createThreads(); }
protected:
GenericFactory * factory;
Server server(GenericFactory * f);
};
class Server : public GenericServer {
protected:
class Thread : public IPCThread
{
friend class Server;
riêng tư:
Channel * channel;
Log threadLog;
công cộng:
Thread(Channel * c);
};
GenericFactory * factory;
công cộng:
Server(GenericFactory * f);
void createThreads();
};
Server::createThreads() {
for (int i = 0; i < threads; ++i) {
thread[i] = new Server::Thread(factory->getChannel());
// I need to set the threadLog's level and ident string to the
// same values they had in the top-level global log. How?
}
}
1 Câu trả lời
我不知道đặc điểm kỹ thuật 方法,但这里有一些技巧。
存储为全局变量
将值复制到全局变量中。将头文件中的变量名称提供为 bên ngoài
.
将参数传递给需要变量的每个函数
一些反对单例的人说要将变量传递给所有需要它们的函数。
存储在配置函数/类中
您可以创建一个 Configuration
单例来读取和解析命令行。该实体将具有读取参数但不写入参数的方法。
抱歉,我没有看到“一刀切”的方法。选择一个并使用它。如果您无法决定,请掷骰子或掷硬币。
关于c++ - 为所有类提供运行时参数的规范方法——全局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23791478/
Tất cả những khác biệt đã biết giữa SQLite, Nhà cung cấp nội dung và Tùy chọn chia sẻ. Nhưng tôi muốn biết khi nào sử dụng SQLite hoặc Content Provider hoặc
CẢNH BÁO: Tôi đang làm việc với một backend mà tôi không kiểm soát hoàn toàn, vì vậy tôi đang vật lộn với một số cân nhắc trong Backbone có thể được giải quyết tốt hơn ở nơi khác... thật không may, tôi không có lựa chọn nào khác ngoài việc giải quyết chúng ở đây! Vì vậy,
Tôi đã vật lộn cả ngày rồi. Biểu thức tìm kiếm theo kiểu gõ đầu của tôi hoạt động hoàn hảo với dữ liệu json từ xa. Nhưng khi tôi thử sử dụng cùng dữ liệu json làm dữ liệu tìm nạp trước thì không có gợi ý nào cả. Sau khi nhấp vào dấu hiệu đầu tiên, tôi nhận được thông báo được xác định trước "Không tìm thấy bất kỳ thứ gì...", với kết quả
Tôi đang tạo một chương trình mô phỏng xổ số NHL, trong đó phải có một JTextField ở bên phải màn hình và quả bóng dự thảo nảy được vẽ ở bên trái. Tôi đã tạo một lớp có tên là Ball triển khai Runnable và trong Draf chính của tôi
Câu hỏi này đã có câu trả lời: Làm thế nào để tính khoảng thời gian trong Java và định dạng đầu ra? (18 câu trả lời) Đã đóng 9 năm trước. Đây là mã của tôi
Tôi có một ứng dụng ASP.NET Web API đang chạy trên phiên bản IIS cục bộ của mình. Ứng dụng web được cấu hình bằng CORS. Phương pháp Web API mà tôi gọi tương tự như: [POST("/API/{foo}/{ba
Tôi lấy thời gian và ngày tháng đầu vào của người dùng như sau: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePicker
Liệu việc nới lỏng tiêu chuẩn “hàng xóm” có đủ không, hay có những hành động tiêu chuẩn khác có thể được thực hiện? Câu trả lời hay nhất Nếu tất cả các giải pháp liền kề đều là Tabu, có vẻ như danh sách Tabu của bạn quá dài hoặc chính sách phát hành của bạn quá nghiêm ngặt. Độ dài danh sách Tabu tốt là
Tôi đang đọc ví dụ mã này từ cppreference: #include #include #include #include template void print_queue(T& q)
Tôi phát điên mất, tôi đang cố gắng hiểu hành vi của chú giải công cụ nhưng không thành công. 1. Vấn đề đầu tiên là khi tôi thử sử dụng nó trong sự kiện nhấp chuột thông qua plugin (Nút 1) -> Nếu bạn vào Fiddle, bạn sẽ thấy bên trong 'Nội dung' rằng hàm được gọi ở mỗi lần nhấp chuột
Tôi có đoạn mã sau trong một thành phần chức năng: const [folder, setFolder] = useState([]); const folderData = useContext(FolderContex
Tôi đang gặp sự cố khi lấy hình ảnh từ S3 bằng URL được chỉ định trước và AFNetworking 3.0. Tôi có thể lấy hình ảnh bằng NSMutableURLRequest và NSURLSession, nhưng khi tôi sử dụng AFHT
Tôi đang gặp sự cố với trình quản lý Oracle UCP khi sử dụng Oracle ojdbc 12 và Java 8. Khi nhóm UCP không khởi động được, tôi muốn đóng các kết nối mà nó tạo ra. Khi ORA-02391: vượt quá
đóng cửa. Câu hỏi này cần có thông tin chi tiết hoặc rõ ràng. 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? Thêm chi tiết và làm rõ câu hỏi bằng cách chỉnh sửa bài đăng này. Đã đóng 9 năm trước. Cải thiện
Tham chiếu đến plunker này: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview Tôi đã chỉ định trong tệp styles.css và trong tệp src/app.ts
Tại sao thanh của tôi lại mỏng thế? Tôi đã thử đặt chiều rộng thành 1 và chúng trở nên thực sự dày. Tôi không biết phải thử cách nào khác nữa. Độ dày mặc định là 0,8, vậy có nên như vậy không? nhập matplotlib.pyplot dưới dạng plt nhập
Truy vấn thực thi như mong đợi khi tôi viết: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; Nhưng điều tôi thực sự muốn là một phép nối đúng. khi
Tôi có dữ liệu thời gian sau: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
Một số thông tin cơ bản - máy chủ NodeJS của tôi đang chạy trên cổng 3001 và ứng dụng React của tôi đang chạy trên cổng 3000. Tôi đã thiết lập một proxy trong ứng dụng React package.json của mình để proxy cho đối tác
Tôi đang gặp phải một vấn đề ngớ ngẩn. Tôi đang cố gắng tải chậm hình ảnh của mình vào ứng dụng Angular, tôi đã thử cách này 2: Nhưng cả hai đều đặt thuộc tính src thay vì data-src, tôi có bỏ sót điều gì ở đây không? Giữ d
Tôi là một lập trình viên xuất sắc, rất giỏi!