700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 课程《设计模式之美》笔记之关于面向对象与面向过程

课程《设计模式之美》笔记之关于面向对象与面向过程

时间:2021-12-23 06:36:55

相关推荐

课程《设计模式之美》笔记之关于面向对象与面向过程

1、滥用getter、setter方法会导致看似是面向对象的代码,实际是面向过程的。

面向对象封装的定义是:通过访问权限控制,隐藏内部数据,外部仅能通过类提供的有限的接口访问,修改内部数据。

ps:当类里有list属性,即使没有setter方法此list还是有被修改得可能,例如

List<Item> items = cart.getItems();Item item = items.get(0);item.setPraice(19.0);

在设计实现类的时候,除非真的需要,否则,尽量不要给属性定义 setter 方法。除此之外,尽管 getter 方法相对 setter 方法要安全些,但是如果返回的是集合容器(比如例子中的 List 容器),也要防范集合内部数据被修改的危险。

(只要返回得是一个浅拷贝,都存在被篡改数据得风险)

传统的 MVC 结构分为 Model 层、Controller 层、View层这三层。不过,在做前后端分离之后,三层结构在后端开发中,会稍微有些调整,被分为 Controller 层、Service 层、Repository 层。Controller 层负责暴露接口给前端调用,Service 层负责核心业务逻辑,Repository层负责数据读写。而在每一层中,我们又会定义相应的 VO(View Object)、BO(BusinessObject)、Entity。一般情况下,VO、BO、Entity 中只会定义数据,不会定义方法,所有操作这些数据的业务逻辑都定义在对应的Controller 类、Service 类、Repository 类中。这就是典型的面向过程的编程风格。

实际上,这种开发模式叫作基于贫血模型的开发模式。(因为数据和操作分开在不同的地方,所以这是一个完全的面向过程的编程。)

!!原来我一直使用得开发模式与思想是违背了面向对象的编程风格嘛?????

在面向对象的编程中容易写出面向过程的代码是因为,面向过程编程更简单也更符合常人的逻辑思维,我们遇到问题通常都是第一步怎么做第二步怎么做一步步解决问题,这就是面向过程,而面向对象则是拆分好几个模块,最后拼接在一起解决问题,这显然是违背正常逻辑的,所以更难,也更需要设计的能力。

虽然面向对象好像更高大上,但是并不是说面向过程的编程就是不可取的,在一些微小程序或者是数据处理的代码里,面向过程编程就更合适,再者每一个面向对象的根本实现也都是面向过程的,只要在使用面向过程编程时,注意控制好副作用(例如不易复用、不易扩展等)。

总结:不用太过避讳使用面向过程编程的方式,各有各的优缺点,重要的是要写出易维护、易扩展、易读、易复用的代码。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。