面向抽象层依赖倒转

依赖倒转原则

在这里插入图片描述
设计系统时将模块分为3个层次,抽象层、实现层、业务逻辑层。
那么,我们首先将抽象层的模块和接口定义出来,这里就需要了interface 接口的设计,然后我们依照抽象层,依次实现每个实现层的模块,在我们写实现层代码的时候,实际上我们只需要参考对应的抽象层实现就好了,实现每个模块,也和其他的实现的模块没有关系,这样也符合开闭原则。

这样实现起来每个模块只依赖对象的接口,而和其他模块没关系,依赖关系单一。系统容易扩展和维护。 我们在指定业务逻辑也是⼀样,只需要参考抽象层的接口来业务就好了,抽象层暴露出来的接⼝就是我们业务层可以使用的方法,然后可以通过多态的线下,接口指针指向哪个实现模块,调⽤了就是具体的实现方法,这样我们业务逻辑层也是依赖抽象成编程。 我们就将这种的设计原则叫做 依赖倒转原则

例子
package main

import "fmt"
/* -- 业务逻辑层 -- */
func main()  {
	//monkey依赖于Animals接口
	var monkey Animals
	monkey = &Monkey{}
	//banana依赖于Fruits接口
	var banana Fruits
	banana = &Banana{}
	
	monkey.eat(banana)
}

/* -- 抽象层 -- */
type Animals interface {
	eat(f Fruits)
}

type Fruits interface {
	taste()
}

/*  -- 实现层 -- */
type Monkey struct {
}

func (m *Monkey) eat(f Fruits) {
	fmt.Println("yummy...yummy!!")
	f.taste()
}

type Banana struct {
}

func (b *Banana) taste()  {
	fmt.Println("Banana`s taste is sweet")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值