当前位置: 首页 > news >正文

徐州h5模板建站seo和sem是什么意思

徐州h5模板建站,seo和sem是什么意思,如何做高并发网站的架构设计,已备案个人网站做淘宝客目录 装饰器模式(Decorator Pattern) 装饰器模式的核心角色: 优缺点 使用场景 代码实现 装饰器模式(Decorator Pattern) 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功…

目录

装饰器模式(Decorator Pattern)  

装饰器模式的核心角色:

优缺点

使用场景

代码实现


装饰器模式(Decorator Pattern)  

        装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。装饰器模式通过将对象包装在装饰器类中,以便动态地修改其行为。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

装饰器模式的核心角色

  • 抽象组件(Component):定义了对象的接口,可以是一个抽象类或接口。
  • 具体组件(ConcreteComponent):实现了抽象组件的接口,是被装饰的对象。
  • 装饰器(Decorator):维持一个指向抽象组件对象的引用,并实现了抽象组件的接口。
  • 具体装饰器(ConcreteDecorator):具体的装饰器对象,用于扩展具体组件的功能。

优缺点

(1)优点:

  • 装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。

(2)缺点:多层装饰比较复杂。

使用场景

  • 扩展一个类的功能。
  • 动态增加功能,动态撤销。

代码实现

package mainimport ("fmt"
)// 抽象组件:咖啡接口
type Coffee interface {GetDescription() stringGetCost() float64
}// 具体组件:原味咖啡
type PlainCoffee struct{}func (c *PlainCoffee) GetDescription() string {return "Plain Coffee"
}func (c *PlainCoffee) GetCost() float64 {return 1.0
}// 装饰器:配料装饰器
type IngredientDecorator struct {coffee    CoffeeextraCost float64extraDesc string
}func (d *IngredientDecorator) GetDescription() string {return d.coffee.GetDescription() + ", " + d.extraDesc
}func (d *IngredientDecorator) GetCost() float64 {return d.coffee.GetCost() + d.extraCost
}// 具体装饰器:牛奶装饰器
type MilkDecorator struct {IngredientDecorator
}func NewMilkDecorator(coffee Coffee) *MilkDecorator {return &MilkDecorator{IngredientDecorator{coffee:    coffee,extraCost: 0.5,extraDesc: "Milk",},}
}// 具体装饰器:糖浆装饰器
type SyrupDecorator struct {IngredientDecorator
}func NewSyrupDecorator(coffee Coffee) *SyrupDecorator {return &SyrupDecorator{IngredientDecorator{coffee:    coffee,extraCost: 0.3,extraDesc: "Syrup",},}
}func main() {coffee := &PlainCoffee{}fmt.Println("Coffee:", coffee.GetDescription(), "Cost:", coffee.GetCost())coffeeWithMilk := NewMilkDecorator(coffee)fmt.Println("Coffee with Milk:", coffeeWithMilk.GetDescription(), "Cost:", coffeeWithMilk.GetCost())coffeeWithMilkAndSyrup := NewSyrupDecorator(coffeeWithMilk)fmt.Println("Coffee with Milk and Syrup:", coffeeWithMilkAndSyrup.GetDescription(), "Cost:", coffeeWithMilkAndSyrup.GetCost())
}
http://www.ds6.com.cn/news/81256.html

相关文章:

  • 廊坊网站关键字优化商旅100网页版
  • java网站开发实例视频教程百度优化插件
  • 做网站买哪家的主机好百度客服电话24小时人工服务热线
  • c2g的代表性电商平台seo实战培训教程
  • 网站做302重定向360优化大师下载
  • 做货代在哪个网站找客源网站软件推荐
  • 互动网站建设特点360网址大全
  • 中信建设有限责任公司领导班子aso关键词覆盖优化
  • 杭州企业做网站crm系统网站
  • 做日用品的网站sem是什么的缩写
  • 网站 建设的售后服务西安网络推广公司
  • 做淘宝头像的网站百度快照怎么发布
  • 哈尔滨关键词优化软件网站优化培训
  • 专业网站制作公司排名郑州网络seo公司
  • 甘肃网站建设方案及案例上海优化网站方法
  • 淮安做微信网站整站seo定制
  • 莱芜人才网最新招聘深圳关键词优化平台
  • 做企业网站的网站推广常用的方法
  • 网站建设的目标客户网站建设推广公司
  • 如何让自己做的网页有网站思亿欧seo靠谱吗
  • 做家常菜的网站哪个好seo合作代理
  • 亚洲购物网站排名可以商用的电视app永久软件
  • 建设视频网站的视频源网页设计实训报告
  • 网站素材设计深圳高端网站制作公司
  • zencart 官方网站站长工具的使用seo综合查询运营
  • 做网站公司能赚钱吗2022网站快速收录技术
  • 网站运维可以做哪些优化课程体系
  • vs2013做的网站天天网站
  • 国外网站的分析工具有哪些竞价推广外包
  • 网站设计公司 武汉网络平台营销