论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
云原生
›
如何计划原则及架构思想
如何计划原则及架构思想
曹旭辉
金牌会员
|
2024-10-23 09:22:48
|
显示全部楼层
|
阅读模式
楼主
主题
966
|
帖子
966
|
积分
2898
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
编程思想
面向对象编程OOP
面向对象编程(Object Oriented Programming,OOP)思想是以现实世界中事物,建立模型表现出来的抽象思维过程。 根据抽象的模型,依照事物之间的关系及方法进行操纵,以求达到
重用性
、
灵活性
和
扩展性
的计划目的。
面向对象编程是把构成标题的事件分解成各个对象,建立对象的目的不是为了完成一个步骤,而是
为了描叙某个事物在整个办理标题的步骤中的举动
。
OOP=对象+类+继续+多态+消息,其中核心概念是类和对象。
特点: 封装、多态、继续
优点:
结构清晰,程序是模块化和结构化,更加符合人类的思维方式;
易扩展,代码重用率高,可继续,可覆盖,可以计划出低耦合的系统;
易维护,系统低耦合的特点有利于镌汰程序的后期维护工作量。
缺点:
开销大,当要修改对象内部时,对象的属性不允许外部直接存取,所以要增加很多没有其他意义、只负责读或写的举动。这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。
性能低,由于面向更高的逻辑抽象层,使得面向对象在实现的时间,不得不做出性能上面的牺牲,计算时间和空间存储大小都开销很大。
面向过程编程POP
面向过程编程(Procedure-Oriented Programming,简记为POP),就是分析出办理标题所必要的步骤,然后用函数把这些步骤一步一步实现,利用的时间一个一个依次调用就可以了。
优点:
流程化使得编程使命明确,在开发之前基本思量了实现方式和最终效果,具体步骤清楚,便于节点分析。
服从高,面向过程夸大代码的短小干练,善于联合数据结构来开发高服从的程序。
缺点:
必要深入的思索,淹灭精力,代码重用性低,扩展能力差,后期维护难度比较大。
函数式编程
函数式编程类似于面向过程的程序计划,但其思想更接近数学计算。允许把函数本身作为参数传入另一个函数,还允许返回一个函数。是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量。
面向过程编程表现的是办理方法的步骤,而函数式编程表现的是
数据集的映射
函数式编程关心
数据的映射
,下令式编程关心办理标题的步骤
六大计划原则
六大计划原则紧张是指:
单一职责原则
(Single Responsibility Principle): 一个类或接口只负担一个职责。
开闭原则
(Open Closed Principle): 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
里氏替换原则
(Liskov Substitution Principle): 子类可以扩展父类的功能,但不能改变原有父类的功能。只要父类能出现的地方,子类就可以出现,而且替换为子类也不会产生任何错误或非常。
迪米特法则
(Law of Demeter),又叫"最少知道法则" : 最少知道原则,尽量降低类与类之间的耦合
接口隔离原则
(Interface Segregation Principle): 建立单一接口,类之间依靠关系应该建立在最小的接口上
依靠倒置原则
(Dependence Inversion Principle): 面向接口编程,高层模块不应该依靠于低层模块,而应该依靠于抽象。抽象不应依靠于细节,细节应依靠于抽象
把这 6 个原则的首字母(里氏替换原则和迪米特法则的首字母重复,只取一个)连合起来就是:
SOLID
(稳定的),其代表的含义也就是把这 6 个原则联合利用的利益:建立稳定、灵活、健壮的计划。
单一职责原则
单一职责原则(Single Responsibility Principle):一个类或者
一个方法只负责一项职责
,尽量做到类的只有一个举动缘故原由引起变化。
该原则适用于类、接口、方法。
单一职责的利益
复杂性降低,实现什么职责都有清晰明确的界说
可读性高,复杂性降低,可读性自然就提高了
可维护性提高,可读性提高了,那自然更轻易维护了
变更引起的风险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性、维护性都有非常大的帮助。
里氏替换原则
里氏替换原则(LSP liskov substitution principle):子类可以扩展父类的功能,但不能改变原有父类的功能。只要父类能出现的地方,子类就可以出现,而且替换为子类也不会产生任何错误或非常。
在面向对象的语言中,继续是必不可少的、非常优秀的语言机制,它有如下优点:
代码共享,镌汰创建类的工作量,每个子类都拥有父类的属性和方法
提高代码的重用性
子类可以形似父类,但又异于父类
提高代码的可扩展性
提高产品或项目的开放性。
继续是侵入性的。只要继续,就必须拥有父类的属性和方法。
降低代码的灵活性。子类会多一些父类的约束。
增强了耦合性。当父类的常量、变量、方法被修改时,必要思量子类的修改。
依靠倒置原则
依靠倒置原则(dependence inversion principle):面向接口编程(通过接口作为参数实现应用场景),高层模块不应该依靠于低层模块,而应该依靠于抽象。抽象不应依靠于细节,细节应依靠于抽象。
含义:
上层模块不应该依靠下层模块,两者应依靠其抽象
抽象不应该依靠细节,细节应该依靠抽象
通俗点就是说变量或者传参数,尽量利用抽象类,或者接口。抽象就是接口或者抽象类,细节就是实现类。
依靠倒置原则的利用建议:
每个类尽量都有接口或抽象类,或者接口和抽象类两者都具备。
变量的表面类型尽量是接口或抽象类。
任何类都不应该从具体类派生。
尽量不要重写基类的方法。如果基类是一个抽象类,而且这个方法已经实现了,子类尽量不要重写。
联合里氏替换原则利用。
接口隔离原则
接口隔离原则(Interface Segregation Principle): 建立单一接口(扩展为类也是一种接口,一切皆接口)
界说:
客户端不应该依靠它不必要的接口;
类之间依靠关系应该建立在最小的接口上;
接口的计划粒度越小,系统越灵活,但是灵活的同时结构复杂性提高,开发难度也会变大,维护性降低。如一个臃肿的接口拆分为三个独立的接口所依靠的原则就是接口隔离原则
迪米特法则
迪米特原则(law of demeter LOD):最少知道原则,尽量降低类与类之间的耦合
迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提拔上去。
如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中。
开闭原则
开闭原则(open closed principle): 指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
为什么要用开闭原则
开闭原则非常著名,只要是做面向对象编程的,在开发时都会提及开闭原则。
开闭原则是最基础的一个原则,前面先容的5个原则都是开闭原则的具体形态,而开闭原则才是其精神领袖。
开闭原则提高了复用性,以及可维护性。
MVC 模式
MVC是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器。
MVC模式的目的是实现一种动态的程式计划,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式透过对复杂度的简化,使程序结构更加直观。
利用MVC的目的是将M和V的实当代码分离,从而使同一个程序可以利用不同的表现形式。其中,View的界说比较清晰,就是用户界面。
模型(Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库计划(可以实现具体的功能)。
视图(View) - 界面计划人员进行图形界面计划。
控制器(Controller) - 负责转发请求,对请求进行处理。<
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
曹旭辉
金牌会员
这个人很懒什么都没写!
楼主热帖
网络安全应急响应 - 03 - 日志分析与内 ...
Redis - 介绍与使用场景
Nmap抓包分析与绕过Windows防火墙 ...
Mysql 的Innodb引擎和Myisam数据结构和 ...
一招教你如何高效批量导入与更新数据 ...
【docker系列】docker API管理接口增加 ...
聊聊Spring事务控制策略以及@Transacti ...
用代码收集每天热点内容信息,并发送到 ...
微服务架构演进
Maven配置私有仓库
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
移动端开发
分布式数据库
前端开发
Java
程序人生
IOS
网络安全
.Net
快速回复
返回顶部
返回列表