论坛首页 Java企业应用论坛

探讨一个比较复杂的算法,设计模式

浏览 4710 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-03  
现有左右两个颗树JTree,从左树移动节点到右树的时候.需要对左树选中的节点作判断,符合条件才可以
移到右树中.
a:左树节点中,有两个属性:instanceType , deploynodeType
instanceType 有三个枚举值:1(单实例单节点), 2(多实例), 3(单系统单实例)
deploynodeType有四个枚举值:1(只能部署到主服务器),2(只能部署到从服务器),3(任意类型的服务

器).4(每他服务器必须都要有)
b:右树节点:存在的多个服务器类型.主服务器只有一个,从服务器有多个.
详细说明一下instanceType :
1: (单实例单节点)每个服务器只能部署一次
2: (多实例).任意服务器都可以部署
3: (单系统单实例).所有服务器中总共只能部署一次
左树:待部署的节点.
从左树节点移动到右树节点时,对服务器类型的节点选中才会判断.


中间的实现从左到右的移动,希望不要出现一堆的if-else.
不然也不叫设计模式了.
   发表时间:2011-07-05  
不是所有的工作都要设计模式来做
设计模式里也未必不会出现if else
0 请登录后投票
   发表时间:2011-07-05  
桥接模式?
0 请登录后投票
   发表时间:2011-07-05  
不知道可不可以这样:
1:抽取出固定算法
2:根据不同参数,由固定算法计算是终结果是否为:true/false
3:根据true/false来决定是否移动节点。

instanceType : 1,2,3
deploynodeType: 100,200,300(把间隔拉开,以便不同组合值不会重复)

两属性和的不同组全为:101,102,103, 201,202,203, 301,302,303


假设:服务器类型值:仅选中主服务器为:100, 仅选中从服务器为:200, 即选中主又选中从:300

     选中数目值: 选中一个为:1,选中多个为:2,其它(单系统单实例不知怎么说):3

那么算法可以抽取为: 服务器类型值 + 选中数目值  与 两属性之和  比较


方法: boolean canMove(两属性之各,选中的服务器类型值,选中服务器的数目值){
       return (服务器类型值 + 选中数目值) < 两属性之各;          

}


上面只是说明原理,可能算法并不正确。仅供参考。
0 请登录后投票
   发表时间:2011-07-05   最后修改:2011-07-11

1.定义一个接口,接口中1个方法(将结点移动到右树,可能需要copy结点,这个由具体实现类决定)
2.定义一个工厂类,根据instanceType , deploynodeType 返回不同的实现1接口的类实例。
3.运行该实例的方法。

我认为设计模式是解决一系列类似问题的模板,而解决具体问题应该是算法,算法可以包含多种设计模式。2楼说的没错。

0 请登录后投票
   发表时间:2011-07-05  
始终认为设计模式只是用来更好的组织代码,减少重复代码、把逻辑和功能去耦用的
0 请登录后投票
   发表时间:2011-07-06  
状态模式可以去掉过量的if else
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics