返回
安卓自定义控件:用策略模式拥抱多变的需求,产品经理,你好!
Android
2023-11-23 18:25:30
在这变化莫测的世界里,产品需求稳定不变简直就是痴人说梦。和产品经理互怼,那纯属是浪费时间,毫无益处。但是,我们有一个积极可行的方向:让代码更加具有弹性,以不变应万变。
记得上次发版前,突然变更单选按钮样式后,又新增了两个和选项按钮相关的需求。这两个需求分别是多选和菜单选。多选类似于原生CheckBox,而菜单选则是多选和单选的结合体,也就是说,如果点击多选,将会有一个菜单展开,可以在其中进行选项选择。
让我们面对现实吧!需求的变化是无法避免的,而我们作为开发者,必须具备应对这些变化的能力。策略模式就是我们应对变化的有力工具。
策略模式是一种设计模式,它允许我们使用不同的算法或行为来处理相同的问题。在我们的例子中,我们可以使用策略模式来处理不同的选项按钮类型。
运用策略模式扩展单选按钮
第一步,我们需要定义一个抽象类来表示选项按钮。这个抽象类将定义一个方法,该方法用于处理选项按钮的点击事件。
public abstract class OptionButton {
public abstract void onClick();
}
接下来,我们需要定义具体的策略类来实现不同的选项按钮类型。
public class RadioButton extends OptionButton {
@Override
public void onClick() {
// 处理单选按钮的点击事件
}
}
public class CheckBox extends OptionButton {
@Override
public void onClick() {
// 处理多选按钮的点击事件
}
}
public class MenuButton extends OptionButton {
@Override
public void onClick() {
// 处理菜单按钮的点击事件
}
}
最后,我们需要创建一个类来将策略类和抽象类联系起来。
public class OptionButtonContext {
private OptionButton optionButton;
public OptionButtonContext(OptionButton optionButton) {
this.optionButton = optionButton;
}
public void onClick() {
optionButton.onClick();
}
}
现在,当我们想要使用不同的选项按钮类型时,我们只需要创建一个新的策略类并将其传递给OptionButtonContext即可。
OptionButtonContext context = new OptionButtonContext(new RadioButton());
context.onClick(); // 处理单选按钮的点击事件
context = new OptionButtonContext(new CheckBox());
context.onClick(); // 处理多选按钮的点击事件
context = new OptionButtonContext(new MenuButton());
context.onClick(); // 处理菜单按钮的点击事件
策略模式的优势在于,它使代码更加灵活和可扩展。当我们需要添加新的选项按钮类型时,我们只需要创建一个新的策略类即可。
结语
使用策略模式,我们可以轻松地扩展单选按钮,以满足不断变化的需求。这种模式不仅使代码更加灵活和可扩展,而且还可以让产品经理和开发者和谐共处,实现双赢。