一、代码无错就是优?——简单工厂模式

66 阅读4分钟

一、初学者代码毛病

1、不规范的命名,如以A、B为变量名;

2、判断分支并排写法,耗费计算机性能;

3、作除法运算时,分母为0的处理,或者字符串参与运算等...

二、面向对象编程

1、所有编程初学者都会有这样的问题,就是碰到问题就直觉地用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程。

2、高质量代码的要求:

  • 可维护
  • 可扩展
  • 可复用

三、活字印刷,面向对象

第一,要改,只需更改要改之字,此为可维护;第二,这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,此乃可复用;第三,此诗若要加字,只需另刻字加入即可,这是可扩展;第四,字的排列其实可能是竖排可能是横排,此时只需将活字移动就可做到满足排列需求,此是灵活性好。

四、面向对象的好处

1、我以前也不懂,不过做了软件开发几年后,经历了太多的类似曹操这样的客户要改变需求,更改最初想法的事件,才逐渐明白当中的道理。其实客观地说,客户的要求也并不过份,不就是改几个字吗,但面对已完成的程序代码,却是需要几乎重头来过的尴尬,这实在是痛苦不堪。

2、开始考虑通过封装、继承、多态把程序的耦合度降低,传统印刷术的问题就在于所有的字都刻在同一版面上造成耦合度太高所致,开始用设计模式使得程序更加的灵活,容易修改,并且易于复用。

五、复制vs.复用

1、有人说初级程序员的工作就是Ctrl+C和Ctrl+V,这其实是非常不好的编码习惯,因为当你的代码中重复的代码多到一定程度,维护的时候,可能就是一场灾难。

2、编程有一原则,就是用尽可能的办法去避免重复。

六、简单工厂模式

1、用一个单独的类来做这个创造实例的过程,这就是工厂。

七、UML类图

UML类图图示样例

image.png

1、类图

image.png

这个‘动物’矩形框,它就代表一个类(Class)。类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。”

2、接口图

1、interface表示法

image.png

它表示一个接口图,与类图的区别主要是顶端有<<interface>>显示。第一行是接口名称,第二行是接口方法。

2、棒棒糖表示法

比如图中的唐老鸭类就是实现了‘讲人话’的接口。

image.png

3、类与类、类与接口之间的关系

1、继承关系

继承关系用空心三角形+实线来表示。

image.png

实现接口用空心三角形+虚线来表示。

image.png

2、关联关系

当一个类‘知道’另一个类时,可以用关联(association)。关联关系用实线箭头来表示。

image.png

3、聚合关系

聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;

聚合关系用空心的菱形+实线箭头来表示。

image.png

4、合成关系

合成(Composition,也有翻译成‘组合’的)是一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。在这里鸟和其翅膀就是合成(组合)关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。

合成关系用实心的菱形+实线箭头来表示。

image.png

5、依赖关系

动物依赖于氧气和水。他们之间是依赖关系(Dependency),用虚线箭头来表示。

image.png

编程是一门技术,更加是一门艺术,不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练,更加容易维护,容易扩展和复用,只有这样才可以真正得到提高。

所谓学无止境,其实这才是理解面向对象的开始呢。

(完)