首页 > 其他分享 >学习随笔(设计模式:面向对象原则)

学习随笔(设计模式:面向对象原则)

时间:2023-11-13 22:22:47浏览次数:36  
标签:随笔 原则 代码 面向对象 抽象 设计模式 上层 底层

内容

今天学习了面向对象的几种设计思想原则,之前一直是C开发,所以面向过程的思想比较严重。面向对象的四个好处:可维护好、可拓展性好、可复用性好、灵活性好。

收获

1.单一职责原则:封装一个类,职责应该单一,仅有一个以其它变换的原因,所以要做好类的职责分离。
2.开放-封闭原则:软件实体(类、模块、函数等)应可以扩展,但是不可修改,高内聚,低耦合,做到类似于硬件插拔效果
3.依赖倒转原则:高层模块不应该依赖底层模块,两个都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖抽象(这个还得再消化一下)
4.里氏代换原则: 子类型必须能够替换掉它们的父类型

感悟

单一职责原则:
1.单一的类中都应该尽量功能专一,不拖泥带水。
2.每次设计类时考虑插拔效果,尽可能提高代码扩展性,降低代码需要修改的内容。
3.依赖倒转原则:

  • 问题:一般面向过程代码都会先封装底层代码,然后上层调用底层代码实现一些功能,但是这样会导致改变软件代码应用场景时,底层代码改变,导致上层的代码也没办法用了。
  • 解决方法:
    1.将上层代码和底层代码都进行抽象,抽象成一个接口,或者一个类。
    2.抽象时遵从里氏代换原则即:子类型必须能够替换掉它们的父类型,软件单位的功能才能不受影响。
    3.上层代码和底层代码都依赖于这个类来实现,底层修改,不影响上层,上层修改也不影响底层。

示例代码

1.文章中利用了一个基于WinForm的俄罗斯方块游戏做了面向对象封装思想的例子,改天有时间可以自己动手实现一下。
2.针对于依赖倒转原则,书中使用数据库的例子将来可以试着写一个。

标签:随笔,原则,代码,面向对象,抽象,设计模式,上层,底层
From: https://www.cnblogs.com/daerduotutwo/p/17830234.html

相关文章

  • 每日随笔——适配器模式
    [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1.画出对应的类图;2.提交源代码;3.注意编程规范。类图 源码:Catpackagesc8;publicinterfacecat{voidcatchMouse();voidcry();}Dogpackagesc8;publicinter......
  • 连载随笔:VBA工具No.2:APOX输入数据辅助制作工具
     一、需求背景        2009年,3G(TD-SCDMA)工程大规模上线,无线网络规划工程师在进行TD-SCDMA无线网络仿真工作中,经常为制作APOX(中国移动设计院的3G仿真软件)仿真输入数据伤浪费了宝贵的时间。    通过APOX输入数据辅助制作工具工具可快速实现仿真输入数据格......
  • 软件设计模式学习每日总结-第一天
    Uml类图1、分三层,从上至下分别为类名,属性,方法。2、类与类之间的关系:关联(聚合,组合)、依赖、继承、实现。3、依赖是最低耦合,继承是最高耦合。  七大原则1、开闭原则:程序代码对扩展开发,对修改关闭。2、里氏代换原则:子类可以扩展父类功能,但是不要修改父类原有的功能。3......
  • 连载随笔:第一个VBA工具的诞生-站间距计算工具(二)
    四、工具打磨     2008年,结合大家的使用反馈,我不断地修改BUG,调整适用功能,到2008年6月16日发布了V2.4版本。      V2.4版本还增加了3种输出格式。     2008年我到了南昌,由于工作负荷的增加,VBA编程就偃旗息鼓了一段时间。2013年的时候,由于4G(TD-L......
  • 新随笔
    CSPT4想出不难。调了一会儿。做出的题还是必须对拍,输不起。线性基query正确写法x=max(x,x^b[i]),if(!(x>>i&1))x^=b[i];常数巨大。集合B中选两数,线性基A中选任意个数:用A消掉B中数的对应位,这样对B'而言,选全A中数一定最优,在B'中trie求两数最大异或和即可。......
  • 博客园发布随笔发布成功后自己能看到 别人那里却显示处于隐藏状态怎么解决
    如果在博客园发布随笔后,你能看到但其他人却显示为隐藏状态,可能存在以下解决方法:检查隐私设置:登录到博客园,并访问个人设置页面。确认你的随笔的隐私设置是公开或对所有人可见,而不是仅限自己或部分访问权限。检查编辑模式:确保你在发布随笔时没有选择草稿或私密模式。有时候误......
  • 随笔 复习 连接池 线程池
    连接池实现思路classConnectPool{public:ConnectPool(intnumber){for(inti=0;i<=number;i++){intfd=socket(); //创建通信的fdconect(); //连接服务器m_list.push(fd);//往容器中存储链接......
  • Spring5学习随笔-Spring5的基本介绍、工厂设计模式
    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】第一章、引言![](https://img2023.cnblogs.com/blog/3321544/202311/3321544-20231113123010602-1325702857.png)SpringIOC工厂是Spring框架中的......
  • 面向对象的 ABAP 里,全局类和局部类有什么区别,以及各自使用场合试读版
    本教程之前的文章,第一次介绍了ABAP面向对象编程领域的类,实例,方法等概念。20.面向对象的ABAP编程初探-什么是类,实例,和Public方法在ABAP很多帮助文档里,我们都能看到SAP在提到类的时候,总是将GlobalClass(全局类)和LocalClass(局部类,有时也称本地类,内部类)相提并论。......
  • Java的设计模式之原型模式
    在某些情况下,需要创建对象的副本,但是复制一个对象的成本可能很高,或者希望避免与对象的具体类耦合。例如,当创建对象的过程较为复杂,或者对象包含大量共享的状态时,使用常规的创建方法可能会导致性能下降。原型模式的解决方案是通过复制现有对象来创建新对象,而不是从头开始构建。这允许......