Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
ChatGPT
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
GitHub工具
更多话题
如何用设计模式替代if else
08-03-17
confuse
在项目中常遇到这种情况,一个页面(e.g.:用户信息)经常需要在不同的功能模块下面显示,但是在不同的功能下面可能页面显示的内容略有不同(有些控件仅在特定功能下才显示),同时登陆时发送的参数自然也有些不同。过程化的思想使得在一个页面代码里面写满了if else,感觉这样很不好,特来请教高人给出一个比较好的设计方案,谢谢。
banq
2008-03-17 21:29
典型的Command模式。
只有深刻全面掌握模式后,才会自己解决if else的问题。
confuse
2008-03-18 09:29
哦,谢谢。页面上主要行为的不同在于画这个页面,如果用Command模式封装的话,是要构建子类,重写画页面的函数,这样得以展现在不同功能下的不同页面吗?这样我感觉是不是可以用builder模式呢?谢谢再指点指点呵呵。
xyz
2008-03-18 11:37
不要为了用模式而用模式!!!!
fety07
2008-03-18 12:55
鼓励用
设计模式
, 不用怎能体会倒"不要为了用模式而用模式".
confuse
2008-03-18 13:21
呵呵,我是真体会到了不用
设计模式
的坏处了,至于该怎莫用,还在摸索,所以想问问哈哈。
raoxy
2008-03-18 17:30
banq大哥,可不可以给出相应的例子给大家讲解一下呢.
谢谢了.关注这个问题.
[该贴被raoxy于2008-03-18 17:30修改过]
cljspn
2008-03-18 20:23
用策略模式.把if语句分支中的内容,构造成实现同一个接口或抽象类的实现类.
bonepole
2008-03-19 22:09
>典型的Command模式
我值的怀疑,我觉的不是。
用多态取代条件式啊,策略模式和状态模式都是一个好的选择
confuse
2008-04-23 11:10
嗯,谢谢大家的关注,最终我决定使用状态模式来处理这类问题。
比较共同的页面中设置一个状态,然后根据这个状态来构造页面元素,以展现不同的页面效果。
但是随之而来带来的就是state子类的增多,为每一种情况都写了个子类.
个人感觉有得必有失,多态性为我们带来好处的同时,必然也产生了开销,至于这开销到底值不值得还得根据具体情况分析了,设计模式用与不用同样也是考验程序员对需求的把握。
banq
2008-04-24 09:19
>必然也产生了开销
现在硬件水平不断推进,连J2ME手机都可以顺畅运行200k的系统,以前200K对于JAVA EE已经不是一个小项目。抛弃C语言那种螺丝壳做道场对性能斤斤计较的思维,我在分布式云计算中已经说了,搞Java就要有大智慧,大思维。
http://www.jdon.com/artichect/architecture.html
freebox
2008-05-23 18:53
java的性能应该用对象缓存解决,而不是代码级别上的。
设计模式