当前位置:网站首页>程序设计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();
依赖倒置原则
程序设计应该依赖抽象接口,而不应该依赖具体实现。
即接口编程思想,接口是稳定的,实现是不稳定的,一旦接口确定,就不应该再进行修改了。根据接口的实现,是可以根据具体问题和情况,采用不同的手段去实现。
接口隔离原则
使用多个隔离接口,比使用单个接口要好。
经常提到的降低耦合,降低依赖,主要也是通过这个原则来达到的
迪米特法则
一个实体应当尽可能少的与其他实体之间发生相互作用。(可以降低耦合)
开闭原则
程序的设计应该是不约束扩展,即扩展开放,但又不能修改已有功能,即修改关闭。
边栏推荐
- Harmony OS ets ArkUI 】 【 】 the development basic page layout and data connection
- Cluster deployment using ceph-deploycep with 3 disks as dedicated osd
- 2022-08-07 反思
- Ridge regression and LASSO regression
- y91.第六章 微服务、服务网格及Envoy实战 -- 服务网格基础(二)
- 基于ABP和Magicodes实现Excel导出操作
- Golang入门教程
- LN论文、五种归一化原理和实现
- 2022 High-altitude installation, maintenance, and demolition exam practice questions and mock exams
- 【Harmony OS】【ARK UI】Date 基本操作
猜你喜欢
MySQL: Implementation Principles of Submitted Read and Repeatable Read | MVCC (Multi-Version Concurrency Control) - Notes for Your Own Use
杰理之开关降噪语音识别没有用【篇】
亚马逊面对风控,自养号测评时应该怎么做?
leetcode:316. 去除重复字母
Masked AutoEncoder论文及实现
【Harmony OS】【ARK UI】轻量级数据存储
全栈代码测试覆盖率及用例发现系统的建设和实践
数量遗传学遗传力计算2:半同胞和全同胞
leetcode:402. 移掉 K 位数字
LeetCode-从链表中删去总和值为零的连续结点
随机推荐
【Harmony OS】【FAQ】Hongmeng Questions Collection 1
JS-DOM-对象的事件onload、匿名函数、this
遗传力缺失的案例
AttributeError: partially initialized module ‘cv2‘ has no attribute ‘gapi_wip_gst_GStreamerPipeline‘
基因对疾病的影响规律--读论文
leetcode:315. 计算右侧小于当前元素的个数
抖音直播新号怎么起号?抖音直播间不进人怎么办?
php uses phpoffice/phpspreadsheet to import and export excel tables
通讯录(文件版)(C语言)(VS)
npm package.json
Divisible property 1
通讯录(动态版)(C语言)(VS)
换座位[异或巧妙的让奇偶互换]
关于sys.path.append(‘..‘)失效
JVM垃圾回收机制简介
【暑期每日一题】洛谷 P1048 [NOIP2005 普及组] 采药
Example of 360 assessment feedback questions
软件测试的方法详细介绍
【Harmony OS】【ARK UI】Public Event Module
[Harmony OS] [ArkUI] ets development graphics and animation drawing