Baby(休假几天,回家避暑) 说:
faint
Baby(休假几天,回家避暑) 说:
我回家休息几天
Larry zou 说:
faint2
Larry zou 说:
下周?
Baby(休假几天,回家避暑) 说:
yes.你老老实实给我写程序
Larry zou 说:
ft
Larry zou 说:
还有什么要写的?
Baby(休假几天,回家避暑) 说:
给你练练手
Baby(休假几天,回家避暑) 说:
你这家伙代码量太低了
Larry zou 说:
恩
Larry zou 说:
代码量?写的东西?
Larry zou 说:
我去年写烦了
Baby(休假几天,回家避暑) 说:
从你接触计算机到现在写过多少行程序?
Larry zou 说:
因为写得太滥
Larry zou 说:
写了不知道多少了
Larry zou 说:
以前做过n个小项目
Larry zou 说:
都tmd一个人包了
Baby(休假几天,回家避暑) 说:
0-5000, 5000-10000,>10000
Baby(休假几天,回家避暑) 说:
选一个
Larry zou 说:
>10000
Larry zou 说:
肯定了
Baby(休假几天,回家避暑) 说:
faint
Baby(休假几天,回家避暑) 说:
>10000而且代码水平还没提高
Larry zou 说:
heihei
Baby(休假几天,回家避暑) 说:
简直就是浪费键盘
Larry zou 说:
有什么地方要改进?
Baby(休假几天,回家避暑) 说:
太多
Larry zou 说:
老大指导指导
Larry zou 说:
那些细节?
Baby(休假几天,回家避暑) 说:
看你比较虚心,现场教学
Larry zou 说:
Baby(休假几天,回家避暑) 说:
WizardBase这个类
Baby(休假几天,回家避暑) 说:
的方法
Larry zou 说:
恩
Baby(休假几天,回家避暑) 说:
没有一个有价值
Larry zou 说:
。。。
Larry zou 说:
why?
Baby(休假几天,回家避暑) 说:
你说你这个类的作用是什么?
Larry zou 说:
抽象出来给MainWizard的用阿
Larry zou 说:
wizardPanel继承它
Baby(休假几天,回家避暑) 说:
抽象什么东西?
Larry zou 说:
wizard panel
Baby(休假几天,回家避暑) 说:
抽象什么功能?
Larry zou 说:
MainWizard可以通过( WizardBase)来调用
Larry zou 说:
wizard panel的功能 ,
Baby(休假几天,回家避暑) 说:
ManWizard -> wizareBase.getPanel()
Baby(休假几天,回家避暑) 说:
这就是你抽象的功能
Larry zou 说:
yes
Baby(休假几天,回家避暑) 说:
别的呢?
Baby(休假几天,回家避暑) 说:
wizard在哪里体现?
Baby(休假几天,回家避暑) 说:
你的wizardbase叫做 wizard base
Baby(休假几天,回家避暑) 说:
不是叫做 panel base
Larry zou 说:
validate
Larry zou 说:
storeParams
Baby(休假几天,回家避暑) 说:
validate是validate什么东西?
Larry zou 说:
validate这个panel收集的变量
Baby(休假几天,回家避暑) 说:
是什么时候validate?
Larry zou 说:
next以后,
Larry zou 说:
在mainWizard里面调的
Baby(休假几天,回家避暑) 说:
panel的变量通过setParam来设置,这给了程序员太大的空间
Baby(休假几天,回家避暑) 说:
when call validate?
Baby(休假几天,回家避暑) 说:
next or back?
Larry zou 说:
next
Baby(休假几天,回家避暑) 说:
if validate fail?
Larry zou 说:
这个是在MainWizard的里面写的逻辑
Larry zou 说:
pop error
Larry zou 说:
并且不会往后走
Baby(休假几天,回家避暑) 说:
if a panel wants to handle back event?
Baby(休假几天,回家避暑) 说:
how to ?
Larry zou 说:
其实这么写了以后,以后只用写 WizardBase的子类了。还有就是在MianWizard里面add()这个panel。其它的都不用管
Larry zou 说:
直接back,
Baby(休假几天,回家避暑) 说:
比如我的panel希望在back时弹出一个warning
Larry zou 说:
如果用xml来包装,就是一个installer panel了
Baby(休假几天,回家避暑) 说:
如何做?
Larry zou 说:
没有考虑这种情况
Baby(休假几天,回家避暑) 说:
installer的panel远远不够好
Larry zou 说:
没实际意义呀
Baby(休假几天,回家避暑) 说:
你找错参考对象了
Baby(休假几天,回家避暑) 说:
如何没有意义?
Baby(休假几天,回家避暑) 说:
比如panel上填入的信息,back时是要清空的
Larry zou 说:
不是吧
Baby(休假几天,回家避暑) 说:
这就要警告客户
Baby(休假几天,回家避暑) 说:
比如密码
Larry zou 说:
现在原不会考虑这么多细节啊
Baby(休假几天,回家避暑) 说:
不是细节的问题
Larry zou 说:
再好的code也是改进的吧
Baby(休假几天,回家避暑) 说:
是你的每一个类都要有扩展性
Larry zou 说:
?
Baby(休假几天,回家避暑) 说:
就这个类而言
Baby(休假几天,回家避暑) 说:
如果我来设计
Baby(休假几天,回家避暑) 说:
WizardBase的方法
Baby(休假几天,回家避暑) 说:
包括
Baby(休假几天,回家避暑) 说:
init()
Baby(休假几天,回家避暑) 说:
view()
Baby(休假几天,回家避暑) 说:
back()
Baby(休假几天,回家避暑) 说:
next()
Baby(休假几天,回家避暑) 说:
no validate
Larry zou 说:
你这样逻辑不清楚了
Baby(休假几天,回家避暑) 说:
你说哪地方不清楚?
Larry zou 说:
next()里面包括逻辑检验了
Larry zou 说:
还有,你panel得到的信息通过什么来保存?
Baby(休假几天,回家避暑) 说:
谁说过wizardpanel一定要校验?
Larry zou 说:
要检验吧,如果填入非法数据
Baby(休假几天,回家避暑) 说:
信息是由具体的子类来保存
Baby(休假几天,回家避暑) 说:
你的设计叫做假如
Baby(休假几天,回家避暑) 说:
要校验
Larry zou 说:
走过这个panel以后,信息要有个全局的hashmap存着吧
Baby(休假几天,回家避暑) 说:
可以增加一个方法 getInputValue(String key)
Baby(休假几天,回家避暑) 说:
不要随便返回容器类
Baby(休假几天,回家避暑) 说:
你可以参考j2se类库
Larry zou 说:
你如果是mainWizard,你并不知道(WizardBase)xxPanel 有那个变量
Baby(休假几天,回家避暑) 说:
mainWizard不需要知道这些
Larry zou 说:
哪怎么存panel流里面的变量?
Baby(休假几天,回家避暑) 说:
这是子类的责任
Baby(休假几天,回家避暑) 说:
为什么要别人来管
Larry zou 说:
子类怎么知道把panel的变量存到哪里?
Baby(休假几天,回家避暑) 说:
子类只需要在别人要求某个变量时返回即可
Larry zou 说:
起码constructor要传入这个全局的map吧
Baby(休假几天,回家避暑) 说:
子类可以自己保存
Baby(休假几天,回家避暑) 说:
不需要map
Baby(休假几天,回家避暑) 说:
还不明白?Installsdk的设计不适合你的设计
Baby(休假几天,回家避暑) 说:
不同的应用有不同的设计要求
Larry zou 说:
我觉得这样不好
Larry zou 说:
如果和每个具体panel相关的话,以后肯定就要出现这样的代码
Larry zou 说:
userAcountPanel.get
Baby(休假几天,回家避暑) 说:
错了
Baby(休假几天,回家避暑) 说:
是wizardBase.getInputValue
Baby(休假几天,回家避暑) 说:
不需要子类的
Larry zou 说:
那么mainWizard就会有很多改动
Baby(休假几天,回家避暑) 说:
对
Baby(休假几天,回家避暑) 说:
mainWizard要变成wizardBase的容器
Baby(休假几天,回家避暑) 说:
可以设计得更通用
Baby(休假几天,回家避暑) 说:
只需要处理wizard base的方法
Larry zou 说:
可是按以前的,mainWizard除了在initPanel()里面add()具体的panel以外。都不需要改动了
Larry zou 说:
它的任务就是提供一个hashMap,装着收集到的变量
Baby(休假几天,回家避暑) 说:
这种设计不是一个可以重用的组件
Larry zou 说:
重用?
Baby(休假几天,回家避暑) 说:
http://java.sun.com/developer/technicalArticles/GUI/swing/wizard/
Baby(休假几天,回家避暑) 说:
你看看别人的设计
Larry zou 说:
我觉得这样,以后只用写继承wizardBase 的panel了,impl getPanel(),validate(),getParams()
Baby(休假几天,回家避暑) 说:
可是我说的功能呢?
Baby(休假几天,回家避暑) 说:
我的子panel需要在back的时候warning user
Baby(休假几天,回家避暑) 说:
需要在next的时候 show up
Baby(休假几天,回家避暑) 说:
不想静态初始化
Baby(休假几天,回家避暑) 说:
只想在显示的时候才创建自己
Baby(休假几天,回家避暑) 说:
子panel自己处理变量
Larry zou 说:
这个也是
Baby(休假几天,回家避暑) 说:
比如查询数据库
Baby(休假几天,回家避暑) 说:
发送http请求获取数据
Larry zou 说:
validate可以处理
Baby(休假几天,回家避暑) 说:
比如查询数据库
Baby(休假几天,回家避暑) 说:
发送http请求获取数据
Baby(休假几天,回家避暑) 说:
你应该给子类足够多的灵活性
Larry zou 说:
我觉得灵活性并不是最球的根本
Larry zou 说:
如果灵活性大的话,就会出现很多的if else
Baby(休假几天,回家避暑) 说:
设计优秀的话是不会有很多的if else
Larry zou 说:
比如init()里面就包含了太多的内容
Baby(休假几天,回家避暑) 说:
什么内容?
Larry zou 说:
比如initialize panel,读取initlized values。像installer panel里面还要分mode
Larry zou 说:
next()里面既有验证,尤有warming message产生,还有保存变量
Larry zou 说:
每个panel几乎都是这样的逻辑,不如把它们都提出来,父类单独写方法
Larry zou 说:
但这样,又不灵活了,扩展性低了。我觉得这本省就是矛盾的
Baby(休假几天,回家避暑) 说:
installsdk的设计并不是很好,我说过.我的init()的意思是,mainwizard告诉wizardbase,我要显示你了,你自己init一下
Baby(休假几天,回家避暑) 说:
next()的意思是,mainwizard说,我要next了,你让不让?
Baby(休假几天,回家避暑) 说:
你想象这两个类在对话
Baby(休假几天,回家避暑) 说:
想象一下
Larry zou 说:
Larry zou 说:
每个panel几乎都是这样的逻辑,不如把它们都提出来,父类单独写方法
Larry zou 说:
f t
Baby(休假几天,回家避暑) 说:
不是提出来的问题
Baby(休假几天,回家避暑) 说:
对象就是在对话,你什么时候才能体会到这一点?
Larry zou 说:
恩。。。你说的对
Baby(休假几天,回家避暑) 说:
你要仔细体会
Baby(休假几天,回家避暑) 说:
你看看j2se类库中的程序
Baby(休假几天,回家避暑) 说:
看看他们是怎么对话的
Larry zou 说:
恩...
Baby(休假几天,回家避暑) 说:
listener -> event
Baby(休假几天,回家避暑) 说:
tree - tree model
Baby(休假几天,回家避暑) 说:
你的设计是可用的
Baby(休假几天,回家避暑) 说:
但是这两个对象之间的交流太少
Baby(休假几天,回家避暑) 说:
简单的说,你的对象的对话是:
Larry zou 说:
给父类加方法不久可以了?
Baby(休假几天,回家避暑) 说:
并不是要给父类加方法
Baby(休假几天,回家避暑) 说:
1。我要显示你了
Baby(休假几天,回家避暑) 说:
2。我要设置参数了
Baby(休假几天,回家避暑) 说:
3。我要获得参数了
Baby(休假几天,回家避暑) 说:
子类没有发言权
Baby(休假几天,回家避暑) 说:
错了
Baby(休假几天,回家避暑) 说:
wizard base没有发言权
Larry zou 说:
next()相当于
if(validate()){
storeParams();
//view next panel
}
Larry zou 说:
validate reutrn true/false就是发言权吧
Baby(休假几天,回家避暑) 说:
这算是
Baby(休假几天,回家避暑) 说:
next不是一定要 { validate()....}
Baby(休假几天,回家避暑) 说:
你可以在我给的类上再抽象一级
Larry zou 说:
如果用next()的话
if(WizardBase.next()){
//view.next()
}
Baby(休假几天,回家避暑) 说:
里面的next 就是 {validate()...}
Baby(休假几天,回家避暑) 说:
就是这样
Baby(休假几天,回家避暑) 说:
然后再抽象的对象才是你现在子类
Larry zou 说:
你的意思是
mainWizard->你建议的wizardBase->我写得wizardBase->userAccountWizard..
Larry zou 说:
?
Baby(休假几天,回家避暑) 说:
yes
Larry zou 说:
恩...
Baby(休假几天,回家避暑) 说:
如果你的wizardpanel都是那种类型
Baby(休假几天,回家避暑) 说:
我的wizardpanel可能与你的完全不类似
Larry zou 说:
恩,说得对
Larry zou 说:
我太考虑细节了,没有抽象好
Baby(休假几天,回家避暑) 说:
抽象不是容易的事
Baby(休假几天,回家避暑) 说:
关键不要太急
Larry zou 说:
我刚开始只想最后写wizardPanel容易一些,只继承几个方法,其它不用管
Baby(休假几天,回家避暑) 说:
我们现在是两人合作
Larry zou 说:
mainWizard也不想变,只addPanel
Baby(休假几天,回家避暑) 说:
不是你自己的程序
Larry zou 说:
恩,嘿嘿
Baby(休假几天,回家避暑) 说:
你要想到你的类是否对别人有价值
Baby(休假几天,回家避暑) 说:
如果有,就好好抽象
Larry zou 说:
恩...
Baby(休假几天,回家避暑) 说:
如果没有,比如我的mainfraim就是很乱的
Larry zou 说:
呵呵
Larry zou 说:
今天学到很多
Baby(休假几天,回家避暑) 说:
一般来说>5000就应该注意这些了
Larry zou 说:
1,类之间的对话
2,多层的抽象
3,自己的类对别人是不是一种束缚
Larry zou 说:
我都是一个人写
Larry zou 说:
学生写代码都很随意的
Larry zou 说:
其实很多小公司代码也很乱
Baby(休假几天,回家避暑) 说:
是
Larry zou 说:
jes的代码都很乱,何况别人了
Larry zou 说:
你以前有过那种合作体会吗?
Baby(休假几天,回家避暑) 说:
别人乱,你也乱?
Baby(休假几天,回家避暑) 说:
多乱的代码我都见过
Larry zou 说:
恩...
Larry zou 说:
学到很多,thx!献花
Baby(休假几天,回家避暑) 说:
不要献花给我
Larry zou 说:
献吻?哈哈
Baby(休假几天,回家避暑) 说:
faint
Larry zou 说:
好,你忙吧,我写完作业改改代码
Baby(休假几天,回家避暑) 说:
ok
Larry zou 说:
再提建议,嘿嘿
Baby(休假几天,回家避暑) 说:
ok
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=458704