什么网站做简历最好,seo整站优化费用,wordpress 采集 摘要,快速建站公司有哪些向导页设计我们都喜欢巫师……。 #xff08;我的意思是软件向导#xff09;。 我们总是很高兴跳到那些“下一步”按钮上#xff0c;就像我们在我们的时髦的小鸡上跳舞一样。。。 因此#xff0c;今天我们将您心爱的向导带入您的编码体验。 让我们跳入一个例子。 假设您要设… 向导页设计 我们都喜欢巫师……。 我的意思是软件向导。 我们总是很高兴跳到那些“下一步”按钮上就像我们在我们的时髦的小鸡上跳舞一样。。。 因此今天我们将您心爱的向导带入您的编码体验。 让我们跳入一个例子。 假设您要设计一个ConservativePerson类。 import java.util.List;
class ConservativePerson{ private boolean isVirgin; private boolean isMarried; private Liststring children; ConservativePerson(boolean virgin, boolean married, Liststring children) { this.isVirgin virgin; this.isMarried married; this.children children; } public boolean isVirgin() { return isVirgin; } public boolean isMarried() { return isMarried; } public Liststring getChildren() { return children; }
} 因此它具有一些约束。 他必须结婚然后才能...好吧不是处女。 据我们所知在生孩子之前他不能是处女。 在过去直到今天基本上都是过去……您可能会为此类定义各种修饰符方法这些修饰符方法会在不变无效的情况下引发异常例如NotMarriedException和VirginException 。 不再。 今天我们将使用向导设计模式来完成此操作 。 在构建ConservativePerson对象时我们使用了流畅的界面样式并利用了现代IDE的强大功能来创建类似向导的感觉。 我们知道我们知道不要再谈论了并向我们展示代码……但是在展示向导代码之前我们将向您展示其用法以便您了解我们在说什么…… public class Main {
public static void main(String[] args) { ConservativePersonWizardBuilder wizard new ConservativePersonWizardBuilder(); ConservativePerson singlePerson wizard. createConservativePerson(). whichIsSingle(). getObject(); ConservativePerson familyManPerson wizard. createConservativePerson(). whichIsMarried(). andNotVirgin(). andHasChildNamed(Noa). anotherChildNamed(Guy). lastChildName(Alon). getObject(); } } 现在它看起来像一个普通的流畅接口但是这里很酷的事情是只有在当前对象状态允许的情况下方法才可以调用。 你将不能够调用的方法andNotVirgin这意味着如果你有没有调用的方法whichIsMarried。 请参见以下屏幕截图 在我们声明他已结婚之后我们可以 这是向导代码。 我敦促您将其复制/粘贴到您的IDE中并尝试使用它构建一个对象。 import java.util.ArrayList; import java.util.List; public class ConservativePersonWizardBuilder { private boolean isVirgin; private boolean isMarried; private ListString children new ArrayListString(); public SetMarriedStep createConservativePerson(){ return new SetMarriedStep(); } class SetMarriedStep { public SetVirginStep whichIsMarried(){ isMarried true; return new SetVirginStep(); } public FinalStep whichIsSingle(){ isMarried false; return new FinalStep(); } } class SetVirginStep { public AddChildrenStep andNotVirgin(){ isVirgin false; return new AddChildrenStep(); } public FinalStep butStillAVirgin(){ isVirgin true; return new FinalStep(); } } class FinalStep { public ConservativePerson getObject(){ return new ConservativePerson(isVirgin, isMarried, children); } } class AddChildrenStep { public AddChildrenStep andHasChildNamed(String childName) { children.add(childName); return new AddChildrenStep(); } public AddChildrenStep anotherChildNamed(String childName) { children.add(childName); return new AddChildrenStep(); } public FinalStep lastChildName(String childName){ children.add(childName); return new FinalStep(); } } } 如您所见向导包含几个步骤。 每个步骤都由专用的内部类表示。 每个步骤都通过其方法揭示了合法的可用操作。 然后每种方法都会根据所做的更改返回一个新步骤。 这样将在编译时而不是运行时检测创建非法对象的尝试。 我们的生产代码中实际上使用了这种模式。 我想到的一个示例是MediaJob类。 此类描述对某些媒体文件的操作。 为了将作业提交给系统必须创建一个MediaJob对象。 问题在于该对象具有许多参数这些参数可以分配与创建非法对象状态的矛盾值。 通过使用向导模式可以轻松构建合法的工作而无需了解整个复杂的约束集。 到此为止。 希望您能尝试一下。..我们计划在不久的将来对此进行更正式的描述GOF风格。 参考 DeveloperLife上我们JCG合作伙伴 Nadav Azaria和Roi Gamliel 的向导设计模式 翻译自: https://www.javacodegeeks.com/2012/01/wizard-design-pattern.html向导页设计