mediator

package
v0.0.0-...-e059a18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 25, 2023 License: MIT Imports: 1 Imported by: 0

README

中介者模式

也叫中间人模式,设计模式的核心理念就是封装变化点,中介模式顾名思义,就是在有关系的两方或者多方之间引入中间人,使得中介两方(多方)都跟中间人交谈,可以独立自由变化,达到解耦的目的.

现实生活的中的租房中介/职业介绍都是中介者模式的实际典型代表.

庞大的中介平台Online就是一个中介者模式的系统的实现.

//中介模式的缺点是:中介本身会实现复杂的逻辑以维护多边关系.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ILandlord

type ILandlord interface {
	CollectRent(mediator IMediator)
}

ILandlord 房东能做的事情

type IMediator

type IMediator interface {
	RegisterRoom(landlord ILandlord)
	Serve(client interface{}) //服务日常活动
	RentOutRoom(tenant ITenant)
}

IMediator 中介能做的事情,中介能代表任何一方, 所以理论上他需要实现所代表对象的所有能力 实际设计中,中介对象本身也会成为问题的所在,可能会比较臃肿

type ITenant

type ITenant interface {
	AskRepair(mediator IMediator)
}

ITenant 租户能做的事情

type Landlord

type Landlord struct {
	Person
	RentAccout int //房东的租金账户
}

Landlord 房东,也继承Person,要收房租

func (*Landlord) CollectRent

func (l *Landlord) CollectRent(mediator IMediator)

CollectRent 房东收租金,只需要向中介收,中介会提代替房东收租金

type Mediator

type Mediator struct {
	Person
	// contains filtered or unexported fields
}

Mediator 中介也继承Person,比如某居客,某家,某壳,即代表租客跟房东谈条件,又代表房东对付租客 Mediator 中介一定会持有两方的必要信息 Mediator 这里简化一下,假设中介只为一个房东和一个租客服务

func (*Mediator) RegisterRoom

func (m *Mediator) RegisterRoom(landlord ILandlord)

RegisterRoom 可以在中介这里发布房源

func (*Mediator) RentOutRoom

func (m *Mediator) RentOutRoom(tenant ITenant)

RentOutRoom 可以从中介租房子

func (*Mediator) Serve

func (m *Mediator) Serve(client interface{})

Serve 中介要替两边或者多边办事,所以它很累,所有事情都要做 这是关键过程 简单起见,1代表租客,2代表房东

type Person

type Person struct {
	Name         string
	WalletAssets int //每个人都有钱包
}

Person 定义一个本身的人

type Tenant

type Tenant struct {
	Person
	// contains filtered or unexported fields
}

Tenant 租客 继承Person

func (*Tenant) AskRepair

func (t *Tenant) AskRepair(mediator IMediator)

AskRepair 要求房东修家具,只需要向中介提要求,中介会提代替房客提要求

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL