平日

(Button和EditText的)观察者模式

昨天遇到bug,看了下Button和EditText的观察者模式,觉得非常繁琐,理解成本很高。
原来大致是这样的:
Button实现Observer接口里的update()方法:

同时给Button和Verifier添加观察者

添加的观察者可以是自己实现Verifiable类,里面定义一些规则;也可以传一个实现了Verifiable的控件,比如EditText。这样的话注意上面蓝色的选中的代码,会把observer同时加到Button和EditText里。调用addObserver把规则加到那个控件自身的验证列表里去(是一个LinkedHashSet<Observer>),然后那个控件就会在自己发生某些变化的时候(比如onTextChanged, onFocusChanged)去update:

EditText调用Button的update

Button的Update

这只是一部分了,你可以在控件里添加observer,也可以在业务里添加;到现在仍觉得很绕。过度设计说的就是这个吧,简单问题复杂化,逻辑过于分散,滥用interface。所谓「观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。」这种说法,我是没有体会到。

四种LaunchMode

http://www.cnblogs.com/xiaoQLu/archive/2011/09/29/2195742.html

--

数据库模型设计三范式

1NF:字段不可分;
2NF:有主键,非主键字段依赖主键;
3NF:非主键字段不能相互依赖;

数据库设计一般满足第三范式就够了 。

不符合第三范式的例子:

学号, 姓名, 年龄, 所在学院, 学院联系电话,关键字为单一关键字"学号";

存在依赖传递: (学号) → (所在学院) → (学院地点, 学院电话)

  • 存在问题:

数据冗余:有重复值;

更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况

修正:
学生:(学号, 姓名, 年龄, 所在学院);
学院:(学院, 地点, 电话)。


reference:
http://www.jb51.net/article/19312.htm
http://www.2cto.com/database/201404/291443.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容