当前位置:网站首页>程序设计6大原则
程序设计6大原则
2022-08-09 04:48:00 【倾听岁月】
在程序设计中,我们往往要遵循着六个原则:
单一职责原则
就一个类而言,应该有且仅有一个引起它变化的原因。
避免一个类负责多个功能的实现,当发生更改时影响其他功能而致使复用成为不可能。
里氏替换原则
派生类(子类)对象能够替换其基类(父类)对象被调用。
即在程序中,任何调用基类对象实现的功能,都可以调用派生类对象来替换。
例子:
一个人可以实现沟通交流、吃东西、喝水等操作。
而一个人的派生类有中国人,日本人等
abstract class Personal
{
public function __construct(
//姓名
public string $name,
//年龄
public int $age,
//性别
public string $sex
){}
public abstract function eat();
public abstract function drink();
public abstract function say();
}
//中国人
class ChinaPersonal extends Personal
{
public function eat()
{
return "中华五千年美食";
}
public function drink()
{
return "喝矿泉水";
}
public function say()
{
return "说汉语";
}
}
//日本人
class JapanPersonal extends Personal
{
public function eat()
{
//狗改不了吃屎
return "吃屎";
}
public function drink()
{
//片子多
return "你们懂得";
}
public function say()
{
return "雅蠛蝶";
}
}
class PersonalBehavior
{
public Personal $personal;
public function __construct(Personal $personal)
{
$this->personal = $personal;
}
public function eat()
{
return $this->personal->eat();
}
public function drink()
{
return $this->personal->drink();
}
public function say()
{
return $this->personal->say();
}
}
$chinaPersonal = new ChinaPersonal("谭勇",27,"男");
$chinaPersonalBehavior = new PersonalBehavior($chinaPersonal);
$japanPersonal = new JapanPersonal("大岛丈",100,"男");
$japanPersonalBehavior = new PersonalBehavior($japanPersonal);
echo "china personal eat: " . $chinaPersonalBehavior->eat() . PHP_EOL;
echo "japan personal eat: " . $japanPersonalBehavior->eat();
依赖倒置原则
程序设计应该依赖抽象接口,而不应该依赖具体实现。
即接口编程思想,接口是稳定的,实现是不稳定的,一旦接口确定,就不应该再进行修改了。根据接口的实现,是可以根据具体问题和情况,采用不同的手段去实现。
接口隔离原则
使用多个隔离接口,比使用单个接口要好。
经常提到的降低耦合,降低依赖,主要也是通过这个原则来达到的
迪米特法则
一个实体应当尽可能少的与其他实体之间发生相互作用。(可以降低耦合)
开闭原则
程序的设计应该是不约束扩展,即扩展开放,但又不能修改已有功能,即修改关闭。
边栏推荐
- php使用phpoffice/phpspreadsheet导入导出excel表格
- 【Harmony OS】【ARK UI】Lightweight Data Storage
- [Harmony OS] [ArkUI] ets development graphics and animation drawing
- 2022 High-altitude installation, maintenance, and demolition exam practice questions and mock exams
- 供应商对接Chewy的EDI需求
- 【UNR #6 A】面基之路(最短路)
- equals and ==
- ABP 6.0.0-rc.1的新特性
- 在快手工作是一种什么体验
- Pycharm社区版专业版下载安装环境配置【精细到每一个步骤】
猜你喜欢
基因对疾病的影响规律--读论文
杰理之播歌曲前后音量大小不一样【篇】
亚马逊面对风控,自养号测评时应该怎么做?
leetcode:315. 计算右侧小于当前元素的个数
mysql内容不存在的报错
学习笔记_numpy图片基本操作_自用
Ali YunTianChi competition problem (machine learning) - O2O coupons prediction (complete code)
Alibaba Cloud Tianchi Contest Question (Machine Learning) - Prediction of Industrial Steam Volume (Complete Code)
2022 High Voltage Electrician Exam Questions and Answers
软件测试的方法详细介绍
随机推荐
MySQL: Implementation Principles of Submitted Read and Repeatable Read | MVCC (Multi-Version Concurrency Control) - Notes for Your Own Use
Efficient review of deep learning DL, CV, NLP
ceph创建存储池,映射,删除练习
MySQL:redo log日志——笔记自用
【HMS core】【Ads Kit】Huawei Advertising——Overseas applications are tested in China. Official advertisements cannot be displayed
Ali YunTianChi competition problem (deep learning) - video enhancement (complete code)
XJTUSE Professional Course and Experiment Guide
Example of 360 assessment feedback questions
抖音直播带货的4个技巧,提升直播间转化率!
npm package.json
LN论文、五种归一化原理和实现
Pycharm Debug调试使用+代码调试理解
2022下半年深圳信息系统项目管理师认证招生简章
【HMS Core】【FAQ】【AR Engine】AR Engine FAQ
杰理之智能充电仓低电发码关机 触摸不开机【篇】
匿名共享内存 ashmem
【学习笔记】AGC044
LeetCode-从链表中删去总和值为零的连续结点
【Harmony OS】【ARK UI】Lightweight Data Storage
TCP/IP协议中分包与重组原理介绍、分片偏移量的计算方法、IPv4报文格式