#   面向对象遵循的原则: SOLID
# S(Single Responsibility Principle)
# 单一职责原则
# 一个类只负责一项职责
# 好处
# 易于维护, 写出高内聚的代码
# 易于代码复用
# 案例
# 我们之前写的计算器类
# 假设只包含加减乘除运算和结果打印
# 如果往后需要增加, 结果写入文件, 结果参与其他运算, 结果上传服务器...
# 是不是每一次都需要去修改此类? 就导致这个类变得特别臃肿; 不利于维护和部分代码复用
# 解决方案
# 计算器只包含, 加减乘除运算以及结果返回
# 根据不同情况, 将对结果的处理分散到其它合适的类别中 # O(Open Closed Principle)
# 开放封闭原则
# 对扩展开放
# 对修改关闭
# 易于维护, 保证代码安全性以及扩展性
# 案例
# 我们之前写的, 在Person类中, 写的, 让小狗小猫工作的方法
# 假设小狗小猫的工作方法名分别是watch和catch;
# 那Person类中让宠物工作的方法就需要通过if进行多分支判定
# 如果以后, 扩展了新的宠物类; 那么, Person类中的让宠物工作的方法, 必须要跟着修改
# 解决方案
# 通过基类, 以及抽象类等方案进行方法的统一 # O(Open Closed Principle)
# 开放封闭原则
# 对扩展开放
# 对修改关闭
# 易于维护, 保证代码安全性以及扩展性
# 案例
# 我们之前写的, 在Person类中, 写的, 让小狗小猫工作的方法
# 假设小狗小猫的工作方法名分别是watch和catch;
# 那Person类中让宠物工作的方法就需要通过if进行多分支判定
# 如果以后, 扩展了新的宠物类; 那么, Person类中的让宠物工作的方法, 必须要跟着修改
# 解决方案
# 通过基类, 以及抽象类等方案进行方法的统一 # L(Liskov Substitution Principle) L(Liskov Substitution Principle) # I(Interface Segregation Principle)
# 接口分离原则
# 如果一个类包含了过多的接口方法,而这些方法在使用的过程中并非"不可分割", 那么应当把他们进行分离
# 所谓接口, 在Python中, 可以简单的理解为"抽象方法"
# 好处
# 提高接口的重用价值
# 案例
# 小鸟
# 吃, 叫, 飞
# 上述接口设计在有鸵鸟类的前提下, 设计就不合理 # D(Dependency Inversion Principle)
# 依赖倒置原则
# 高层模块不应该直接依赖低层模块
# 他们应该依赖抽象类或者接口
# 好处
# 利于代码维护
# 案例
# 电脑类, 依赖的不是某一个具体鼠标类
# 而应该是, 鼠标类的抽象
# 能单击, 能双击, 能右击, 能移动鼠标指针...
# 到时, 可以是触摸板, 也可以是有线鼠标, 也可以是蓝牙鼠标...

Python 类的设计原则的更多相关文章

  1. java类的设计原则

    1.内聚性 类应该描述一个单一的实体,所有的类操作应该在逻辑上相互配合,支持一个连贯性的目标.例如:学生和教职工属于不同的实体,应该定义两个类. 2.一致性 要遵循一定的设计风格和命名习惯.给类.方法 ...

  2. 六大设计原则——单一职责原则【Single Responsibility Principle】

    声明:本文内容是从网络书籍整理而来,并非原创. 用户管理的例子 先看一张用户管理的类图:  再看一眼上面的图,思考:这样合理吗? 这个接口是一个很糟糕的设计! 用户的属性和行为竟然混合在一起!!! 正 ...

  3. 连载:面向对象的葵花宝典:思考、技巧与实践(39) - 设计原则 vs 设计模式

    它的设计原则,和设计模式,是否该用它? ============================================================================= 在& ...

  4. java设计原则:16种原则

    一   类的设计原则   1 依赖倒置原则-Dependency Inversion Principle (DIP) 2 里氏替换原则-Liskov Substitution Principle (L ...

  5. ASP.NET MVC 学习笔记-3.面向对象设计原则

    在设计程序.系统框架或者类时,最主要考虑的事情就是代码的可扩展性,而不是完成功能即可.因此,提倡使用面向对象设计的最佳实践和基本原则. 1.       单一职责原则(SRP:The Single R ...

  6. Java六大设计原则

    类的设计原则     依赖倒置原则-Dependency Inversion Principle (DIP) 里氏替换原则-Liskov Substitution Principle (LSP) 接口 ...

  7. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  8. python的设计原则及设计模式

    python的设计原则及设计模式 七大设计原则 单一职责原则 [SINGLE RESPONSIBILITY PRINCIPLE] 一个类负责一项职责. 里氏替换原则 [LISKOV SUBSTITUT ...

  9. Python学习笔记之 Python设计思想&设计原则

    Python设计思想&设计原则 设计思想 1.封装 数据角度 多种数据合为一种数据 优势:代码可读性高            将数据与行为相关联 例如:电脑(内存,储存空间,...) 行为角度 ...

随机推荐

  1. Windows平台安装最新OpenCV-2.4.9,利用Eclipse、MinGW构建C++调用OpenCV开发环境

    近期电脑重装系统了,第一件事重装OpenCV. 这次直接装最新版,2014-4-25日公布的OpenCV2.4.9版本号,下载链接: http://sourceforge.net/projects/o ...

  2. SQL Server 2008 R2 开启远程连接

    因为sql server 2008默认是不允许远程连接的,sa帐户也是默认禁用的,如果想要在本地用SSMS(SQL Server Management Studio Express) 连接远程服务器上 ...

  3. 160623、理解 Promise 的工作原理

    Javascript 采用回调函数(callback)来处理异步编程.从同步编程到异步回调编程有一个适应的过程,但是如果出现多层回调嵌套,也就是我们常说的厄运的回调金字塔(Pyramid of Doo ...

  4. Dart基础学习02--变量及内置类型

    Dart基础学习02--变量及内置类型 Dart中的变量 首先看一个变量的定义和赋值 var name = 'Bob'; 在Dart中变量名都是引用,这里的name就是一个指向值为Bob的字符串的引用 ...

  5. 调试SVO_edgelet

    感谢白巧克力亦唯心提供的SVO_edgelet代码,作者博客:https://blog.csdn.net/heyijia0327/article/details/61682150 程序地址: http ...

  6. pip安装Scrapy框架报错

    安装: pip3 install scrapy==1.1.0rc3 一..解决scrapy安装错误: 二.具体操作: 1.在http://landinghub.visualstudio.com/vis ...

  7. 四、H5 录制视频 Web Real-Time Communication

    Web Real-Time Communication HTML5实现视频直播功能思路详解_html5教程技巧_脚本之家 https://m.jb51.net/html5/587215.html

  8. sql 锁类型与锁机制

    SQL Server锁类型(SQL)收藏1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁.   2. NOLOCK:不添加共享锁和排它锁,当这个选项 ...

  9. 白话Redis分布式锁

    redis分布式 简单来说就是,操作redis实例时,不是常规(单机)操作一个实例,而是操作两台或多台,也就是基于分布式集群: 而且redis内部是单进程.单线程,是数据安全的(只有自己的线程在操作数 ...

  10. 我的Android进阶之旅------>解决Android Studio报错:DefaultAndroidProject : Unsupported major.minor version 52.0

    问题描述 今天使用Android Studio 2.0打开我之前的项目时,编译报了如下错误: Error:Cause: com/android/build/gradle/internal/model/ ...