完成一个依赖注入的小案例

Original 2019-06-05 01:06:55 211
abstract:<?php class Animal { public function swim() { return '我喜欢游泳'; } public function fly() { return '我喜欢飞'; } public function ru
<?php
class Animal
{
	public function swim()
	{
		return '我喜欢游泳';
	}

	public function fly()
	{
		return '我喜欢飞';
	}

	public function run()
	{
		return '我喜欢跑步';
	}
}


// 类内部实例化类,在类中实例化另一个类这会让当前类与被引用的类之间产生高度的依赖关系,即高度耦合。这样操作非常不好
class Fish
{
	public function getInfo()
	{
		$fish = new Animal();
		return '我是鱼,生活在水里'.$fish->swim();
	}
}

$fish =  new Fish();
echo $fish->getInfo();
echo '<hr>';



// 利用构造函数实现依赖注入,类外先实例化其它类,然后在new当前时传入实例化后的引用类做参数

class Bird
{
	private $bird = null;
	public function __construct(Animal $animal)
	{
		$this->bird=$animal;
	}
	public function getInfo()
	{
		return '我是老鹰,生活在天空'.$this->bird->fly().'<hr>';
	}
}

$animal = new Animal;
$bird = new Bird($animal);
echo $bird->getInfo();



// 利用操作方法(普通函数)实现依赖注入,类外先实例化其它类,然后在new当前类后调用操作方法时传入实例化后的引用类做参数

class Hare
{
	public function run(Animal $animal)
	{
		return '我的兔子,生活在野外'.$animal->run();
	}
}

$animal = new Animal;
$hare = new Hare;
echo $hare->run($animal);


引用类包含了各种需要用到的方法或不需要的方法,可对引用类进行实例化后的部分方法进行访问操作,当类外部实例化另个类后再以参数方式传入当前类方法中可免类之间产生高度的依赖关系

2019-06-05_010607.png

Correcting teacher:查无此人Correction time:2019-06-05 10:09:33
Teacher's summary:完成的不错。编程有很多设计模式,多了解,对以后工作帮助很大。继续加油。

Release Notes

Popular Entries