我在看到一个功能进行编程时,很容易的就会将这个功能一步一步进行,使其在一个模块中就完成了对这个功能的所有要求!这样做是由很大弊端的,如程序的可维护性不知还有多少?这些有的是结构化程序设计中都是要摒弃的,更何况是在面向对象编程中呢!
在简单工厂模式中,我学到了点知识,也受到了点启发,在此分享一下!
1 一个老问题:分清什么时候适合用 if 什么时候适合用 switch (或 select ),用 if 是要每个条件都要判断的,而 switch 却不同。
2 还是一个老问题:看书和视频先看大体内容,不懂的记下,然后通过细看,做题解决!再有就是,看书看视频我能否提出?
3 什么是工厂模式?工厂就是一个类,一个用于制造的类。按照大鸟的说法就是一个用于创造实例的类。而我们应该做的就是考虑出这样一个单独的类来完成创建实例的过程!
在大鸟给小菜讲解那个计算器的例子时,人家就考虑了要将加减乘除等操作分别作为一个类,而不是在一个模块里来完成所有的操作,这样我们在添加新的操作时,便不会影响到其他操作,不必要将所有代码都拿来才能办事,然后这些操作类的实例化我们就要统一在一个工厂里完成,至于完成后的操作就不是我们这个工厂要关心的事情了!
4 引用人家的一句话:编程是一门技术,更加是一门艺术,不能只满足与写完代码运行结果正确就完事,时常考虑如何让代码更加简练,更加容易维护,容易扩展和复用,只有这样才可以真正得到提高!
像我们在为一个对象增加行为时,就要问这些行为还会有改动,有增加吗?那个计算器的例子就是这样。开始时这些行为都在 operation 这个对象里了,但考虑这些行为的改动性,和维护性,我们就干脆把他们都抽象为类,而继承于 operation 类。
有时看书就是不如拿例子来理解问题容易,再讲 UML 模型时,从这一节里我也有学会了很多东西,也巩固了已有的知识,分条总结一下!
1 类的 UML 表示分三层:
1 )名称——如果是抽象类,则有斜体显示。
2 )类的特性,如属性
3 )类的操作,如方法,行为
* 我们要注意:“ + ”表示 Public ,“ - ”表示 Private ,“ # ”表示 Protected
2 接口与类的图形不同之处在于它的头部有 <<interface>> 或多出一个接口的头。
类是对象的抽象,我感觉接口就是对行为的抽象!
3 继承关系用空心三角形 + 实线来表示
4 实现接口用空心三角形 + 虚线来表示
5 当一个类“知道”另一个类可以用关联( association )。如企鹅与气候的关联。关联用实线箭头表示
6 聚合表示一种弱的“拥有”关系,如大雁跟雁群的关系。聚合用空心菱形 + 实线箭头表示
7 合成表示一种强的“拥有”关系,如小鸟和翅膀。合成用实心菱形 + 实现箭头表示
8 依赖关系用虚线箭头表示,如动物依赖氧气
学到的知识点列举这些,重要的是在以后的实践中,我要如何避免借着向对象编程名义,来编写四不像的程序?