design-patterns 相关问题

设计模式是软件设计中常见问题的通用可重用解决方案。当您遇到设计模式实施问题时,请使用此标记。请勿在有关文本模式匹配的问题上使用此标记。在实现繁重的问题上使用此标记时 - 标记实现编写的代码语言。

lua:如何从字符串中捕获整数或点数?

我有 S = 564186207, 399.4989929, ABC, 度, 2425, 335.232 这个字符串 我想捕获唯一的整数和点数 像那样 你的textstring.gfind(S, ???) --> 564186207, 399.49899...

回答 1 投票 0

消息应用程序的 Api 网关与 Websocket 服务器

我正在经历消息应用程序的高级系统设计。(100万用户,每天50条消息) 有些人使用Api网关,有些人使用Websocket服务器进行以下操作:

回答 1 投票 0

导致渐变带的原因以及如何解决它?

最近我正在编写一些线性和径向渐变,我注意到它们在 Chrome 中显示得很好,但在 Safari 中却有条带。从与该主题相关的许多其他问题来看,似乎

回答 1 投票 0

如何在flutter/dart中绘制弹出布局?

我是 flutter/dart 新手,通常我使用 Storyboard/android-design-view 来设计应用程序。但在 flutter/dart 中我找不到任何设计编辑器。所以现在我想尝试用代码绘制弹出窗口! 这...

回答 1 投票 0

开关或者其他东西

我正在制作一些关于清洁工的游戏应用程序。现在还处于早期阶段,到目前为止我对此感到自豪,但是随着时间的推移我的代码变得非常混乱,所以我决定过来询问......

回答 2 投票 0

Spring中接口的多个实现的管理

在我的Spring应用程序中,我有一些接口及其实现 公共接口验证(){ 布尔验证(); } 公共接口 ValidationLogicA 扩展 Validation(){ } 公开

回答 1 投票 0

用函数语言将命令表示为数据的名称?

这是一个关于在我看来是函数式编程中非常常见的模式的名称的问题。 在像 Haskell 这样的纯函数式编程语言中,你经常有一个“outer&q...

回答 1 投票 0

有经理设计模式这样的东西吗?

是否存在管理器设计模式之类的东西来控制不同实体如何交互? 这是针对环境、环境监听器和实体类已被

回答 4 投票 0

Spring中接口的多个实现的管理

在我的Spring应用程序中,我有一些接口及其实现 公共接口验证(){ 布尔验证(); } 公共接口 ValidationLogicA 扩展 Validation(){ } 公开

回答 1 投票 0

R 中的 list.files() 中的多个模式

list.files(pattern="a|b") 给我一个文件名列表,其中名称中包含 a 或 b。 我想要一个 列表.文件(模式=“a**&**b”) 这给了我一个包含文件的列表...

回答 1 投票 0

lambda 时代的观察者模式

观察者模式传统上要求观察者实现 update() 方法。 然而,当我们有 lambda 表达式时,我们也可以这样做: #包括 #包括 观察者模式传统上需要观察者实现update()方法。 但是,当我们有 lambdas 时,我们也可以这样做: #include <functional> #include <vector> #include <iostream> class Subject { public: using CallbackClosure = std::funtion<void()>; void RegisterCallback(CallbackClosure&& cb) { closures_.push_back(std::move(cb)); } void test() { for (auto const& cb : closures_) { cb(); } } private: std::vector<CallbackClosure> closures_; }; // usage int main() { Subject s; // register here with a lambda instead of a pointer to the observer s.RegisterCallback([]{ std::cout << "Hey from main\n"; } s.test(); return 0; } 我知道我们当然可以让RegisterCallback成为一个ure virtual并让不同的主题来实现。那个界面,但上面的内容应该足以说明这个例子了。 这是实现“观察者模式”的现代方式吗?或者为观察者定义更新接口也有一些好处吗? lambda 可以简单地被视为匿名观察者吗? 现在已经接近就寝时间了,但这是我正在思考的一个非常快速的草稿。 #include <unordered_map> #include <functional> #include <iostream> namespace details { struct revoke_itf_t { virtual void revoke(std::size_t cookie) = 0; virtual ~revoke_itf_t() = default; }; struct subscription_t { std::size_t cookie; revoke_itf_t* subscriptions; // todo bool flag and move constructor ~subscription_t() { subscriptions->revoke(cookie); } }; } template<typename... args_t> class callbacks_t : public details::revoke_itf_t { public: [[nodiscard]] auto subscribe(std::function<void(args_t...)> callback) { m_subscription_id++; m_subscriptions.insert({m_subscription_id,callback}); return details::subscription_t{m_subscription_id,this}; } void operator()(args_t&&... args) { for(auto& [cookie,callback] : m_subscriptions) { callback(std::forward<args_t>(args)...); } } private: void revoke(std::size_t cookie) override { auto it = m_subscriptions.find(cookie); if ( it != m_subscriptions.end() ) { m_subscriptions.erase(it); } } std::size_t m_subscription_id{0ul}; std::unordered_map<std::size_t,std::function<void(args_t...)>> m_subscriptions; }; int main() { callbacks_t<int> subject; { auto subscription = subject.subscribe([](int value) { std::cout << value << "\n"; }); subject(1); subject(2); // subscription goes out of scope here } subject(3); }

回答 1 投票 0

如何用 grep 或 awk 进行计数,模式是否分别出现 x 次(一个接一个)

我需要一些代码的帮助。我需要的是“if 语句”代码,用 grep 或其他命令分别计算文件中两个单词重复的次数。 比赛文件为: 2011/05/04 ...

回答 2 投票 0

如何确保我的类Initialize方法只被调用一次,最好的方法是什么?

我目前正在使用 Unity IoC 容器,这是我的 AppConfig 类。正如您所看到的,Initialize 方法应该只调用一次,我使用了双重锁检查来确保这一点。 什么...

回答 5 投票 0

如何重写一个方法以拦截对此方法的任何调用?

在此小部件中,有一个函数 isPermission()。我将如何拦截它并覆盖它。 我使用以下方法来拦截其他函数 isPermissedDomain 等,但无法覆盖

回答 1 投票 0

Builder 模式与 Param 对象输入

我一直在阅读有关 Go4“构建器模式”的内容。您可以在这里阅读有关该模式的更多信息:https://www.sohamkamani.com/javascript/builder-pattern/ 我不明白为什么我们不能...

回答 1 投票 0

线程和观察者模式

我正在尝试在多线程程序中用Java编写观察模式来开发自己的日志记录程序。我的程序在任何Java类中使用,可以创建Logger类,并向...

回答 1 投票 0

如何知道变量名是否存在错误

当使用 go 时,有一种模式用于定义错误并以(对我来说)非常奇特的方式处理它们。通常错误会被声明为 ErrorSomethingWentWrong = error.New("Just an example...

回答 2 投票 0

OOP 设计模式在共享库中使用项目特定子类

TL;DR 共享库实现了一些在库本身和使用该库的项目中使用的类。项目继承该类来添加项目特定的代码。难道是……

回答 1 投票 0

所有界面组合都被视为策略模式吗

使用策略模式,我们可以使用接口解耦行为。 行为被移入可以有多个实现的接口。 客户端可以与接口有关系并且...

回答 2 投票 0

有没有比隐藏输入字段更安全的替代方法来在 POST 请求中保留属性?

我遇到了一个问题,即由于忘记在我的 标签内添加隐藏字段,我的 CRUD 应用程序中的发布请求导致数据丢失。例如,我有一个 UserModel,它有一个 我遇到了一个问题,即由于忘记在我的 <form> 标签内添加隐藏字段,我的 CRUD 应用程序中的发布请求导致数据丢失。例如,我有一个 UserModel,它具有 DateCreated 属性,理想情况下不应在创建记录后更新该属性。但我的 CRUD 应用程序内的后续更新导致我的 UserModel 的 DateCreated 字段被设置为 NULL。这是因为在我的 Razor 页面中没有 <input asp-for="Input.DateCreated" hidden /> 标签可以跨 POST 请求保留 DateCreated 的值。我犹豫是否接受解决此问题的最佳方法只是记住为您不想更新的每个字段添加隐藏的输入标记。仅仅记住这样做似乎是不必要的风险和糟糕的设计。 一些示例代码: <form method="post"> <input asp-for="AspNetUsersId" hidden /> <input asp-for="Input.DateCreated" hidden /> <div class="mb-2"> <label asp-for="Input.Email" class="form-label">Email:</label> <input asp-for="Input.Email" type="email" class="form-control form-control-sm" /> <span asp-validation-for="Input.Email" class="text-danger form-text"></span> </div> <div class="mb-2"> <label asp-for="Input.FirstName" class="form-label">First Name:</label> <input asp-for="Input.FirstName" class="form-control form-control-sm" /> <span asp-validation-for="Input.FirstName" class="text-danger form-text"></span> </div> <div class="mb-2"> <label asp-for="Input.LastName" class="form-label">Last Name:</label> <input asp-for="Input.LastName" class="form-control form-control-sm" /> <span asp-validation-for="Input.LastName" class="text-danger form-text"></span> </div> </form> 想到的一个解决方案是开始使用 DTO 进行更新,它根本不包含 DateCreated 字段,并且只需要将 Id 属性包含在隐藏字段中,但后来我遇到了一个问题,我必须进行后续查询以获取 UserModel 的其余属性,然后相应地映射它们并将其传递给我的 Update 方法。 或者,我可以编写另一个接受 UpdateUserDto 的更新方法。 使用隐藏输入标签是跨发布请求保留模型属性的最佳方法还是这个问题是更大的架构问题的结果? 如果您希望将所有属性都包含在 SQL 更新命令中,则 DbContext.Update 方法非常合适。但是,如果您只想启用对实体中某些属性的修改,建议的解决方案是将实体附加到上下文,然后指定可能已修改的属性。这样,只有这些字段才会包含在生成的 SQL 更新命令中。 context.Attach(myEntity); context.Entry(myEntity).Property(x => x.Name).IsModfied = true; context.Entry(myEntity).Property(x => x.Description).IsModfied = true; await context.SaveChangesAsync(); 在隐藏字段中包含其他属性值并不是一个好主意,因为例如熟悉浏览器开发工具的用户可以修改它们。或者任何可以制作 HTTP 请求的人。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.