<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    rednight

    0x2B|~0x2B,That's not a question,Just do it.
    posts - 32, comments - 14, trackbacks - 0, articles - 0

    state pattern

    Posted on 2006-12-26 14:46 rednight 閱讀(343) 評論(0)  編輯  收藏 所屬分類: 工作學(xué)習(xí)
    The logic to change state is only inside one method (initVesselView(…)) inside GrVessel.java.?

    if (viewType == VIEW_STOWAGE) {
    ??????????? vslView_ = new VesselStowageView(leftPoint, bow2Left, leftCenter,
    ???????????????????????????????????????????? rightCenter, shipWidth_);
    ??????? }
    ??????? else if (viewType == VIEW_SIDE) {
    ??????????? vslView_ = new VesselSideView(leftPoint, bow2Left, leftCenter,
    ????????????????????????????????????????? rightCenter, shipWidth_);
    ??????? }
    ??????? else if (viewType == VIEW_PLAN) {
    ??????????? vslView_ = new VesselPlanView(leftPoint, bow2Left, leftCenter,
    ????????????????????????????????????????? rightCenter, shipWidth_);
    ??????? }
    ??????? else {
    ??????????? throw new IllegalArgumentException(
    ??????????????? "GrVessel::initVesselView-->Invalid view type!");
    ??????? }


    We do not need to repeat this logic of changing view in many other method.
    This is the benefit of State design pattern.
    The 3 state classes here are VesselPlanView.java, VesselSideView.java and VesselStowageView.java

    Please note that in the state classes, if a method is supported by stateA and not supported by stateB.?
    Then, in stateB, the method body will throw an exception (IllegalArgumentException) to indicate that coder call the wrong method in the wrong state.

    Example, in VesselPlanView.java, public boolean addStowage(...).? This method is only meaningful to stowageView.

    public boolean addStowage(IlvManager manager, List transformList, IlvGraphic stowage, String stadBayN,
    ????????????????????????????? boolean isSelect) {
    ??????? throw new IllegalArgumentException(
    ??????????????? "GrVessel::addStowage-->be sure the vessel at stowage view!");
    ??? }


    Hence, in PlanView, the method body will throw exception.

    Just to share with you a better way to code.

    主站蜘蛛池模板: 亚洲第一AAAAA片| 毛片亚洲AV无码精品国产午夜| 福利片免费一区二区三区| 性xxxxx免费视频播放| 亚洲Av无码乱码在线观看性色| 亚洲AV无码一区二区三区鸳鸯影院| 国产精品无码免费播放| 国产精品亚洲四区在线观看 | 亚洲国产精品一区第二页 | 亚洲AV无码一区二区三区人 | 久久狠狠爱亚洲综合影院| 亚洲免费观看在线视频| 亚洲大片免费观看| 一二三四在线播放免费观看中文版视频 | 亚洲Av永久无码精品一区二区| 黄网址在线永久免费观看 | 亚洲色欲啪啪久久WWW综合网| 24小时免费直播在线观看| 亚洲欧美第一成人网站7777| 日韩毛片免费在线观看| 免费又黄又爽又猛大片午夜| 18禁网站免费无遮挡无码中文| 亚洲一欧洲中文字幕在线| 免费无遮挡无码视频网站| 青青久久精品国产免费看| 日韩va亚洲va欧洲va国产| **俄罗斯毛片免费| 亚洲精品国产suv一区88| 一级毛片直播亚洲| 亚洲AV永久无码天堂影院| 亚洲国产高清精品线久久| 99免费精品视频| 亚洲同性男gay网站在线观看| 国产无遮挡色视频免费视频| 91精品成人免费国产| 亚洲理论片中文字幕电影| 国产精品国产午夜免费福利看| 二区久久国产乱子伦免费精品 | 亚洲乱码中文字幕手机在线| 日韩精品内射视频免费观看| 日韩va亚洲va欧洲va国产|