Questions tagged «strategy»

战略是用于实现目标,解决类似需求或解决一系列问题的通用方法。

14
管理者如何选择编程语言
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 管理人员可以并且经常会强加用于项目的编程语言,这对任何人来说都不是秘密。 作为我自己的程序员,我从来都无法理解这一点。 但是现在我想我做了:当乔尔·斯波斯基(Joel Spolsky)在播客上说他们应该使用QuickBooks时,我得到了一个启示,因为“世界上每个会计师都知道”。这让我感到非常类似于“选择Java,因为世界上每个程序员都知道它”。 既然我已经从另一个角度看到了相同的问题,我对会计知识了解不多,但是我确实对编程有所了解,我想知道程序员如何才能帮助确保为项目选择正确的编程语言?

8
根据历史划分公平团队的策略/算法
我们是一群定期打地板球的人。每节课都是从划分团队的艰巨任务开始的。 那么,有什么比自动选择团队更好的选择呢? 因此,鉴于团队组合和结果的历史记录,以及参加此特定会议的人员列表,找到最佳团队的最佳策略是什么?最佳来说,我指的是尽可能多的团队。 有任何想法吗? 编辑:为了清楚起见,我必须根据其选择的数据将是这样的: [{ team1: ["playerA", "playerB", "playerC"], team2: ["playerD", "playerE", "playerF"], goals_team1: 10, goals_team2: 8 }, { team1: ["playerD", "playerB", "playerC"], team2: ["playerA", "playerE", "playerG"], goals_team1: 2, goals_team2: 5 }, { team1: ["playerD", "playerB", "playerF"], team2: ["playerA", "playerE", "playerC"], goals_team1: 4, goals_team2: 2 }]

2
您如何处理代码中的抽象理解?
在查看新的代码库时,我喜欢从下至上的方法开始。 我在其中理解一个文件,然后移至下一个抽象。 但是很多时候我发现自己忘记了底层抽象在做什么。 因此,在这一点上,我发现自己陷入了无尽的循环,回到我以前完全理解的文件,然后尝试重新学习它们。同时尝试弄乱彼此之间相互联系的许多其他抽象。 是否有更好的策略来应对这种情况? 我是否应该忘记较低级别的细节,并将其视为既定知识?但是即使如此,很多时候仍需要对底层抽象有一个先前的了解,以了解当前抽象在做什么。

6
策略模式的优势
如果仅在if / then情况下编写代码,使用策略模式为什么有好处? 例如:我有一个TaxPayer类,它的一种方法使用不同的算法来计算税收。那么,为什么不具有if / then情况并找出在该方法中使用哪种算法而不是使用策略模式呢?另外,为什么不能只为TaxPayer类中的每个算法实现单独的方法? 另外,算法在运行时更改意味着什么?

2
零停机时间部署-过渡Db模式
实现零停机时间部署也涉及到同一问题,但我需要一些有关正在考虑的策略的建议。 语境 一个基于Web的应用程序,其中Apache / PHP用于服务器端处理,而MySQL DB /文件系统用于持久性。 我们目前正在建设基础设施。所有网络硬件都将具有冗余,并且所有主网络电缆都将在绑定对中使用以实现容错。服务器被配置为具有硬件容错能力的高可用性对,并且将为虚拟机容错能力和总体性能进行负载平衡。 我的目的是我们能够在不停机的情况下将更新应用到应用程序。在设计基础架构以确保可以提供100%的正常运行时间时,我付出了极大的努力。每次应用更新会有10-15分钟的停机时间,这将是非常令人失望的。这一点特别重要,因为我们打算有一个非常快速的发布周期(有时每天可能达到一个或多个发布)。 网络拓扑结构 这是网络的摘要: Load Balancer |----------------------------| / / \ \ / / \ \ | Web Server | DB Server | Web Server | DB Server | |-------------------------|-------------------------| | Host-1 | Host-2 | Host-1 | Host-2 | |-------------------------|-------------------------| Node A \ / …

7
是否可以在没有明显分支的情况下实施策略模式?
策略模式很好地避免了if ... else庞大的构造,并使添加或替换功能更加容易。但是,我认为这仍然存在一个缺陷。似乎在每个实现中仍然需要一个分支构造。它可能是工厂或数据文件。以订购系统为例。 厂: // All of these classes implement OrderStrategy switch (orderType) { case NEW_ORDER: return new NewOrder(); case CANCELLATION: return new Cancellation(); case RETURN: return new Return(); } 此后的代码无需担心,现在只有一个地方可以添加新的订单类型,但是此部分代码仍不可扩展。将其拉出到数据文件中有助于提高可读性(我知道这值得商bat): <strategies> <order type="NEW_ORDER">com.company.NewOrder</order> <order type="CANCELLATION">com.company.Cancellation</order> <order type="RETURN">com.company.Return</order> </strategies> 但这仍然增加了样板代码来处理数据文件-授予的,更容易进行单元测试和相对稳定的代码,但是仍然增加了复杂性。 而且,这种结构不能很好地进行集成测试。现在每个单独的策略可能更容易测试,但是您添加的每个新策略都增加了测试的复杂性。它比没有使用模式时要少,但是它仍然存在。 有没有办法实现减轻这种复杂性的战略模式?还是这只是简单而已,而尝试更进一步只会增加另一层抽象,却几乎没有好处?

5
修改后的策略设计模式
我最近开始研究设计模式,除了一点点不同之外,我正在编写的一件事将完全适合于战略模式。 本质上,我的某些(但不是全部)算法需要一个或两个额外的参数传递给它们。 所以我要么需要 当我调用他们的calculate方法时,给他们传递一个额外的参数 要么 将它们存储为ConcreteAlgorithm类中的变量,并能够在调用算法之前对其进行更新。 有满足这种需求的设计模式吗?在坚持策略模式的同时如何实现? 我考虑过将客户端对象传递给所有算法,并将变量存储在其中,然后仅在特定算法需要时才使用该对象。但是,我认为这既笨拙,又打败了战略模式的意义。 为了清楚起见,我正在用Java实现,因此没有太多的可选参数(可以很好地解决此问题)。

2
策略模式中的上下文类
我试图理解策略模式并问自己:上下文类是必须具备的,还是可以在不损害模式目的的情况下将其省略? 我给我的印象是我需要某种开关来读取不同类型的文件,但不想仅仅破解某些东西,以后再进行重构(尽管当然总是可以对代码进行重构,但是想法是:尝试事先在设计中尽可能地聪明...): 图片取自Wikimedia 客户可以直接委派给Strategy界面吗?或者我只是想了解有关上下文类的内容? interface Reader { // read information from file and fill data list field of Client readFile(); } class ExcelReader implements Reader{ /* */ } class PdfReader implements Reader{ /* */} class Client{ // strategic choice Reader r; // data list field List<Data> data; // Client Constructor …

2
如Head First设计模式的Duck示例所示,上下文继承与策略模式无关吗?
在Head First Design Patterns中,它通过使用Duck示例讲授策略模式,其中可以在运行时为Duck的不同子类分配特定的行为。根据我的理解,策略模式的目的是在运行时更改单个对象的行为,但是他们使用Duck的继承来更改各种Duck的行为。 关联? Duck的上下文继承是否与策略模式无关,或者是改变Duck类型并改变其行为也是采用策略模式的充分理由吗?您需要同时改变两者的情况是否构成使用策略模式的充分理由?他们为何将其作为策略模式示例? 一个简单的例子 我是否可以仅使用Duck类(没有派生类)来进一步简化此示例?然后,在实现一个鸭子对象时,可以根据不依赖于其自身对象类型的某些情况为其分配不同的行为。例如:FlyBehavior根据天气而变化或QuackBehavior根据一天中的时间或鸭子的饥饿程度而变化。我意识到这将解决与书中提出的问题不同的问题,但是我正在寻找的是可以依靠的相关策略模式示例。 我上面的例子也会构成战略模式吗? 编辑: 我成功找到了两个更简单的策略模式示例,它们更严格地只是没有上下文继承的策略模式:Hunter.java和Solver.py。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.