在程序设计中,我们往往要遵循着六个原则:
就一个类而言,应该有且仅有一个引起它变化的原因。
避免一个类负责多个功能的实现,当发生更改时影响其他功能而致使复用成为不可能。
派生类(子类)对象能够替换其基类(父类)对象被调用。
即在程序中,任何调用基类对象实现的功能,都可以调用派生类对象来替换。
例子:
一个人可以实现沟通交流、吃东西、喝水等操作。
而一个人的派生类有中国人,日本人等
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();
程序设计应该依赖抽象接口,而不应该依赖具体实现。
即接口编程思想,接口是稳定的,实现是不稳定的,一旦接口确定,就不应该再进行修改了。根据接口的实现,是可以根据具体问题和情况,采用不同的手段去实现。
使用多个隔离接口,比使用单个接口要好。
经常提到的降低耦合,降低依赖,主要也是通过这个原则来达到的
一个实体应当尽可能少的与其他实体之间发生相互作用。(可以降低耦合)
程序的设计应该是不约束扩展,即扩展开放,但又不能修改已有功能,即修改关闭。