响应式网站编码怎吗设置,wordpress 添加微博关注,商标设计网图大全,wordpress 修改主题路径目录
代理模式#xff08;Proxy Pattern#xff09;
代理模式的核心角色#xff1a;
优缺点
使用场景
注意事项
代码实现 代理模式#xff08;Proxy Pattern#xff09; 代理模式#xff08;Proxy Pattern#xff09;通过引入代理对象来控制对真实对象的访问。
代…目录
代理模式Proxy Pattern
代理模式的核心角色
优缺点
使用场景
注意事项
代码实现 代理模式Proxy Pattern 代理模式Proxy Pattern通过引入代理对象来控制对真实对象的访问。
代理模式的核心角色
抽象主题Subject定义了真实对象和代理对象的共同接口这样在任何使用真实对象的地方都可以使用代理对象。真实主题Real Subject定义了代理对象所代表的真实对象。代理Proxy保存一个引用使得代理可以访问真实主题并提供与真实主题相同的接口以便可以在任何时候替代真实主题。
优缺点
1优点
代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用代理对象可以扩展目标对象的功能代理模式能将客户端与目标对象分离在一定程度上降低了系统的耦合度增加了程序的可扩展性
2缺点
代理模式会造成系统设计中类的数量增加在客户端和目标对象之间增加一个代理对象会造成请求处理速度变慢增加了系统的复杂度
使用场景 按职责来划分通常有以下使用场景1远程代理。 2虚拟代理。 3Copy-on-Write 代理。 4保护Protect or Access代理。5Cache代理。6防火墙Firewall代理。 7同步化Synchronization代理。 8智能引用Smart Reference代理。
注意事项
和适配器模式的区别适配器模式主要改变所考虑对象的接口而代理模式不能改变所代理类的接口。和装饰器模式的区别装饰器模式为了增强功能而代理模式是为了加以控制。
代码实现
package mainimport fmt// 文件下载器用户可以通过下载器下载文件。为了提高下载速度和安全性
// 希望引入一个代理对象代理对象可以在下载前进行权限验证并记录下载日志。// 抽象主题文件接口
type File interface {Download()
}// 真实主题具体文件
type RealFile struct {filename string
}func (f *RealFile) Download() {fmt.Printf(Downloading file: %s\n, f.filename)
}// 代理文件代理
type FileProxy struct {realFile *RealFile
}func (p *FileProxy) Download() {p.authenticate()p.realFile.Download()p.log()
}func (p *FileProxy) authenticate() {fmt.Println(Authenticating user...)
}func (p *FileProxy) log() {fmt.Println(Logging download activity...)
}// 客户端代码
func main() {file : FileProxy{realFile: RealFile{filename: example.txt,},}file.Download()
}