gpt4 book ai didi

java - 如何在运行时管理策略模式行为?

转载 作者:行者123 更新时间:2023-11-29 03:29:17 27 4
gpt4 key购买 nike

我正在阅读 Head First Design Patterns当我有疑问时预订。

在第一章中,研究了他们教授的策略模式以创建可互换的类。根据下图:

Strategy Pattern

我的问题:如果我想制作一个具有可视界面的桌面应用程序,并让一些用户比其他用户拥有更多的权限来管理 Ducks 及其行为,该怎么办?因此,他们可以在运行时创建 FlyRocketPowered 行为。我怎样才能做到这一点?

我的意思是,这些行为在我看来被表示为类很奇怪,因为我看不出如何让它们在用户级别可编辑,每次 FlyBehavior需要创建/删除/更改 QuackBehaviorDuck 子类用户将不得不要求我通过创建/删除/更改类来修改源代码,但这不是我们想要的想要,我们需要一些更独立于开发人员的东西。

编辑

假设我想制作一个屏幕Add Fly Behavior(只是添加,不是编辑,不是删除),会有两个字段,第一个是行为名称,第二个是调用fly()方法时打印的内容。

通过编辑源代码,我可以创建一个这样的类:

public class FlyRocketPowered implements FlyBehavior {
public void fly() {
System.out.println("I’m fl ying with a rocket!");
}
}

我需要做什么才能在用户层面做到这一点?

最佳答案

首先我想说我喜欢这本书。这是我最喜欢的编程书籍。

对于您的问题:我认为您对策略模式有一点误解;)目标不是让您的用户在运行时创建新行为。但是使用这种模式,你可以给你的“管理员”一些面板来给任何鸭子任何可用的行为。所以行为仍然在编译时生成。但是您可以在运行时交换行为

另外,作为一个有趣的事实:完全有可能让您的“管理员”在运行时创建新的行为。看看 Java compiler api .但是,如果您考虑这样做,请记住安全漏洞有多大,以及最坏情况下的客户是多么愚蠢。

关于java - 如何在运行时管理策略模式行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231657/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com