【Java笔记】关于面向对象的思考和自己用的工厂模式

面向对象的思考

  在大学期间课堂有C语言课程和自学了Java。C语言是一个面向过程的程序设计语言,Java是面向对象程序设计语言。

  在相关编程时,C语言实现的思想角度是:解决这个问题需要哪些过程,及这些过程进一步细分,最终形成一个功能函数,通过组合,协调这些函数,最终实现这个过程。

  而Java实现的思想角度是,问题由哪些部件组成(对象),这些部件本身有哪些属性(成员)和关于这些属性的操作(方法)?部件和部件之间有什么联系,以及部件如何联系起来的,最终实现应用的目的。

  举个例子来区分下两者吧。例如去北京这个事。C语言来说就是有自驾车car()(其中具体包括车沿途规划的路程),还可以火车train()(其中具体包括车沿途规划的路程),飞机等具体过程都聚合在一个函数里,相当于多条路,用户自己选。

  而Java考虑的就不一样了,他根本先不管路径怎么规划,而是车类Car:里面成员是汽车的零部件,方法是如何操纵这些零部件。飞机类Plane:成员是组成一个飞机需要哪些,方法是如何操作这些零部件。把所有交通工具(对象)都描述清楚了,才开始类与类之间进行联系,看如何规划路径。

面向过程编程:

  • 优点:性能比面向对象要好一点,只用考虑做成一件事的过程,做成这件事所用的工具只是简单用,不用详细描述。
  • 缺点:没有面向对象易维护、易复用、易扩展

面向对象编程:

  • 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 ,工程上特别需要
  • 缺点:性能较差,代码量较多,因为要把一个对象仔细的描述出来才能形成一个类

面向对象编程思想的终极目标是:代码复用,也就是为了加快开发效率,更加省钱!

面向对象编程如何设计一个类?一个类最重要的是它的属性(成员),次重要的才是方法,因此想要形成一个类就一定看待对象仔细分析它由什么性质,它具体是由哪些构成的。分析完后,一个类就应运而生了。

自己用的工厂模式

看过我前面博文ORM和EasySwing的人一定会注意到xxxBeanDefinition,xxxBeanFactory,xxxBeanFactoryBuilder经常会被使用。对,这就是我常用的设计模式,我自己认为的工厂模式,其命名的来源呢,可以看做是加工咖啡豆的工厂。

xxxBeanDefinition(定义)

  咖啡豆的定义。这个类是你所考虑的问题是由哪些部分组成的,通通当作成员,也就是说,你把你的抽象的问题看做成一个具体对象了,简简单单关于成员的操作(getter,setter),结果按什么样子显示(toString),就是个简单的问题定义问题。

  但是,虽然它简单但是它却是非常重要,因为它是你底层的“豆子”啊,要是品质不好(没设计好),问题的复杂度就会增加,所以这个类深处最底层,一定要考虑的面面俱到,这个类不一定非要是一蹴而就设计出来的,记得常回家看看(常回来修改)。

xxxBeanFactory(容器)

  咖啡豆存放的工厂。这个类其主要成员就是盛放豆子的容器(Map``或List),操作就是增加豆子的方法和取豆子的方法。因为可能遇到不同问题需要不同豆子,因此工厂也不是单例的,它可以是很多个。(例如EasySwing界面之间不同,控件不同,就需要界面个数的工厂)

xxxBeanFactoryBuilder(扫描)

  咖啡豆工厂创建这,这里就是开始造工厂了。这个类主要作用就是扫描,进行创建工厂。分为两种扫描方式,一种是扫描XML文件,扫描其映射关系建立;另一种是运用包扫描对相应带有注解的类进行建立。

总结

  上面三者各自有各自的分工,钉是钉铆是铆,使一个问题解耦。设计各类可以进行单元测试,出现异常错误也知道该去哪里找问题,是基本的定义有问题,还是盛放的容器出了错,还是扫描出了问题。这样可以让思考不要乱,开发效率更高。

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页