日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

向导页设计_向导设计模式

發布時間:2023/12/3 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 向导页设计_向导设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

向導頁設計

我們都喜歡巫師……。 (我的意思是軟件向導)。 我們總是很高興跳到那些“下一步”按鈕上,就像我們在我們的時髦的小雞上跳舞一樣。。。 因此,今天我們將您心愛的向導帶入您的編碼體驗。 讓我們跳入一個例子。

假設您要設計一個ConservativePerson類。

import java.util.List; class ConservativePerson{ private boolean isVirgin; private boolean isMarried; private List<string> children; ConservativePerson(boolean virgin, boolean married, List<string> children) { this.isVirgin = virgin; this.isMarried = married; this.children = children; } public boolean isVirgin() { return isVirgin; } public boolean isMarried() { return isMarried; } public List<string> 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 List<String> children = new ArrayList<String>(); 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

向導頁設計

總結

以上是生活随笔為你收集整理的向导页设计_向导设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。