12.12日心得笔记(有关面向对象+接口的相关知识)

先说一下,建公众号的初衷。我花了更多的心思可能在公众号上的文章,博客上都没怎么写。我俨然已经将它作为我的笔记本了额,当然也是让更多的同学可以看到笔记,从中有所得。其实我有自己的笔记本,分类别做的。




v2-0c6e1bffa622c2ab56eb50ec3b914ece_b.jpg



但是呢,大家都知道,知识都是连贯的,穿插的,我们这一行,就是查漏补缺,断点老大说的好,学习就是一个扫盲区的过程。所以我的onenote笔记本侧重分门别类知识点,公众号文章侧重总结性和随笔性笔记。(#^.^#)突然发现,win10系统可以分屏,一边看着自己的笔记,一边思考总结,还可以敲代码,真舒服。


先来说说面向接口编程(额,虽然和标题没什么关系,但是,今天解决了之前一直思考的一个问题,看来还是基础太差,要加强学习和实践!)


面向接口编程:那么什么是面向接口编程呢,通俗点说,就是把客户的业务给抽象提取出来,作为接口,应当规范约束行为,而具体的实现则由它的实现子类来实现。


那么面向接口编程的优点有哪些呢?

  1. 降低程序的耦合性。怎么说呢,大家都知道,如果直接依赖于具体实现类,当我们类的内部需要这个服务的时候,需要去主动new,这就产生了直接依赖,而直接new,第一个,不方便测试(这个还没试过),第二个,具体实现类,依赖了众多其他的服务,我们同时还要进行传参,太过太多麻烦。而二者紧密的联系,也导致了更换其中之一的难度增大。假如具体时限内内部的服务要修改或者更换,这也要改,那也要改,简直惨不忍睹。而使用了接口之后,直接使用构造函数注入,这样,不必再依赖具体实现的类,不必去关心具体实现类到底是怎么实现的。所以,它降低了耦合性,使得程序的灵活性更高。
  2. 易于程序的扩展。这里就要拿现实例子和代码来举栗子了-。-
    易于程序的扩展,怎么个扩展呢?OOP面向对象原则,迪米特法则说道我们应该尽量使两个对象之间交互的依赖越少越好,而依赖接口恰恰满足了此原则;里式替换原则:子类应当能够替换掉它的父类类型,反之不行(比如我们可以说所有的猴子都是动物,反之并不是所有的动物都是猴子),而面向接口编程又刚好满足了这一原则,使用实现类来替代它的父类接口;开闭原则:我们应当开放扩展,封闭修改。所以面向接口编程满足了上述三大原则,它非常易于程序的扩展,使得程序易于修改,灵活起来。下面举例说明:

    一个项目开发完,测试疯狂测试,程序员疯狂改bug,之后客户提出了新的需求-。-那么这个新的需求,可以是修改,也可以是增加功能。

    下面先来说修改。面向接口编程,只需新增一个实现类,继承接口,将原来的代码复制过来,该修改说明修改什么,原来的实现类,不要去动,我们严格遵循封闭修改,即不要修改原来的代码,开放扩展,即添加新的扩展方法。之后就可以在容器中更换注入的实现方法。


增加呢:增加,你想到的可能是直接在接口中添加新的功能方法,并实 现对不对。那这样子它所有的子类都需要实现这个接口,想过没,就之 前的例子,一个接口,两个实现类,放在那,你必须得实现两个接口, 这样子就造成了接口污染,因为有的实现类并不一定要需要那个功能 呢,对吧!那,应该怎么做呢?正确的做法就是:新增一个接口,里面放 入新增的方法,让这个接口继承原先的接口即可,之后把需要实现新增 功能的实现类实现。这样子,完美解决。下面用代码示例:


新建学生服务接口类:IStudentService和实现类StudentService,里

面实现了三个方法:吃,喝,笑。


v2-da94ea8ee2ce7853dfa5e9cfdc471840_b.jpg




v2-33778bc5f7ac300db7058ba7c1ca5790_b.jpg


需求发生变更,新增了一个学生功能方法,哭。这时候我们新增接口INewStudentService 。里面新增一个方法,哭,并且继承IStudentService。接着让实现类继承INewStudentService即可。


v2-d45007f1f120eab9db7f464416be31ab_b.jpg



好了,今天的笔记就到这里结束了,接下来可能会更新的笔记是:OOP面向对象原则(下)及整体复习、泛型的学习、特性的学习、OOP对象三大特征(封装、继承、多态)、MVC方面(文件上传学习,文件下载复习、筛选器,认证授权等)、NET Core 方面,服务器环境部署,及linux等等。


可能笔记之间知识点有穿插部分,但温故而知新嘛,每次的理解和体会都不一样,希望每次给你在闲暇之余带来提升。


坚持的路何其漫长,愿与君共赴之。