一 抽象工厂模式简介?
抽象工厂模式(英语:Abstract factory pattern)是一种软件开发设计模式。抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。
二 代码?
2.1 开发代码?
package abstractfactorytype Cache interface { Get(key string) string Set(key, value string)}type Redis struct { date map[string]string}func NewRedis() *Redis { return &Redis{ date: make(map[string]string), }}func (r *Redis) Get(key string) string { if v, ok := r.date[key] ; ok { return v } return ""}func (r *Redis) Set(key,value string) { r.date[key]=value}type Memcache struct { date map[string]string}func NewMemcache() *Memcache { return &Memcache{ date: make(map[string]string), }}func (r *Memcache) Get(key string) string { if v, ok := r.date[key] ; ok { return v } return ""}func (r *Memcache) Set(key,value string) { r.date[key]=value}type CacheSampleFactory interface { CreateRedis() Cache CreateMemcache() Cache}type SampleFactory struct {}func NewSampleFactory() *SampleFactory { return &SampleFactory{}}func (s *SampleFactory) CreateRedis() Cache { return NewRedis()}func (s *SampleFactory) CreateMemcache() Cache { return NewMemcache()}
2.2 测试?
package abstractfactoryimport ( "fmt" "testing")func TestNewSampleFactory(t *testing.T) { s := NewSampleFactory() r := s.CreateRedis() r.Set("r", "rv") t.Logf(r.Get("r")) fmt.Println(r.Get("r")) m := s.CreateMemcache() m.Set("m","mv") t.Logf(m.Get("m")) fmt.Println(m.Get("m"))}
三 应用场景?
四 特点?
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!