1.设计模式详情与应用
2.设计模式六大原则
1.什么是设计模式
设计模式是一套被反复使用,容易被他人理解的,可靠的代码设计经验的总结
那我们常说的架构,框架,设计模式有什么关系?
a.架构是一套体系结构,是项目的整体解决方案
b.框架是可供复用的半成品软件,是具体程序代码
c.架构一般会涉及采用什么样的框架来加速和优化某部分问题的解决,而好的框架代码里
合理使用了很多设计模式
比如:laravel框架中就使用了很多的设计模式,其中包括单例模式,工厂模式,门面模式,
注册树模式(DI/IOC),适配器模式,观察者模式等多种设计模式
设计模式的目的就是为了更好的代码重用性,可读性,可靠性,可维护性
1.单一职责原则:一个类只负责一项职责
class Animal
{
public function breathe($animal)
{
echo $animal."呼吸空气<br/>";
}
}
class Program
{
public function main()
{
$animal=new Animal();
$animal->breathe('牛');
$animal->breath('羊');
$animal->breath('鱼');
}
}
修改后:
class Terrestrial{
public function breathe($animal)
{
echo $animal."呼吸空气<br/>";
}
}
class Aquatic{
public function breathe($animal)
{
echo $animal."呼吸水<br/>";
}
}
class Programl
{
public function main()
{
$terrestrial = new Animal();
$terrestrial->breathe('牛');
$terrestrial->breathe('羊');
$aquatic = new Aquatic();
$aquatic->breathe('鱼');
}
}
优点:
1.可以降低类的复杂度,一个类只负责一项职责,逻辑简单;
2.提高类的可读性,提高系统的可维护性;
3.变更引起的风险降低,变更是必然的
/**
里氏代换原则
**/
class A{
public function subtract($a,$b){
return $a-$b;
}
}
//扩展
class C extends A
{
public function subtract($a,$b)
{
//return parent::subtract($a,$b);
return $a+b;
}
public function quadrature($a,$b)
{
return $this->subtract($a,$b)*100;
}
}
class B
{
public function main()
{
$class=new A();
echo $class->subtract(100,50);
echo $class->subtract(200,100);
}
}
$b=new B();
$b->main();
//修正
abstract class D
{
public abstract function subtract($a,$b);
public function quadrature($a,$b)
{
return $this->subtract($a,$b)*100;
}
}
//通过子类继承实现抽象方法达到扩展目的