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

温州网站建设价格不备案的网站能上去吗

温州网站建设价格,不备案的网站能上去吗,新闻株洲最新,泉州做网站工作室一、什么是装饰器模式 装饰器模式#xff08;Decorator Pattern#xff09;是一种结构型设计模式#xff08;Structural Pattern#xff09;#xff0c;它允许用户通过一种灵活的方式来动态地给一个对象添加一些额外的职责。就增加功能来说#xff0c;装饰器模式相比使用… 一、什么是装饰器模式 装饰器模式Decorator Pattern是一种结构型设计模式Structural Pattern它允许用户通过一种灵活的方式来动态地给一个对象添加一些额外的职责。就增加功能来说装饰器模式相比使用子类更为灵活。这种模式创建了一个包装对象也就是装饰器来包裹真实对象。 二、装饰器模式的原理 装饰器模式的工作原理是通过创建一个包装对象也就是装饰器来包裹真实对象。装饰器通常会持有一个被装饰对象的引用并在执行某些操作时将这个请求委托给被装饰的对象同时还可以在委托之前或之后添加一些附加操作。这样我们就可以在不修改原有类结构的情况下为对象添加新的功能或改变其行为。 三、装饰器模式的结构 装饰器模式主要包含以下几个角色 组件Component定义一个接口装饰器和被装饰者共同需要实现的接口且装饰器可以给其实现类动态地添加一些职责。 具体组件Concrete ComponentComponent的实现类定义了一个具体的对象扮演被装饰的角色。 装饰器Decorator同样是Component的实现类同时持有一个Component对象的引用通过调用该引用的方法来实现相应接口。 具体装饰器Concrete DecoratorDecorator的子类负责向Component角色添加新的功能。 四、装饰器模式的应用场景 装饰器模式非常适用于以下场景 给对象添加额外的职责当对象需要频繁地增加功能时装饰器模式提供了一种灵活的方式来添加或移除这些功能而无需修改对象的原有结构。 需要保持对象的接口不变如果修改对象的接口会影响到许多其他的客户端代码那么使用装饰器模式可以在不改变接口的情况下为对象添加新的功能。 通过组合而非继承来扩展对象的功能装饰器模式允许我们通过组合多个装饰器来扩展对象的功能而不是通过创建大量的子类。这样可以避免类爆炸的问题使系统更加灵活和可扩展。 运行时动态地添加或移除功能在运行时我们可以根据需要动态地添加或移除装饰器从而改变对象的行为。这种灵活性是继承关系所不具备的。 五、装饰器模式的优缺点 5.1. 优点 可以在运行时动态地添加或移除功能而无需修改现有的代码更加灵活。 提供一种动态的方式来扩展一个对象的功能在运行时选择不同的具体装饰器从而实现不同的行为。 遵循开闭原则对扩展开放对修改关闭。这意味着我们可以在不修改现有代码的情况下通过添加新的装饰器类来扩展系统的功能。 可以对一个对象进行多次装饰通过使用不同的具体装饰类以及这些装饰类的排列组合可以创造出很多不同行为的组合得到更加强大的对象. 5.2. 缺点 随着装饰器数量的增加类的数量也会增加这可能会使系统变得更加复杂和难以理解且大量的对象还会占用系统更多资源在一定程度上影响系统的性能。 由于装饰器模式本质上是一种递归调用使得出现问题时排查错误较困难需要逐级排查较为繁琐。 六、装饰器模式示例 假设我们有一个咖啡店提供不同类型的咖啡和可以添加的配料如牛奶、糖等我们可以使用装饰器模式来实现这个需求。 6.1. 定义组件接口 首先我们定义一个咖啡的接口它包含一个getDescription方法和一个cost方法来分别描述咖啡和计算价格 public interface Beverage {String getDescription();double cost(); } 6.2. 创建具体组件 然后我们创建一个实现了Beverage接口的具体咖啡类比如Espresso。 public class Espresso implements Beverage{Overridepublic String getDescription() {return Espresso;} ​Overridepublic double cost() {return 1.99;} } 6.3. 创建装饰器角色 接下来我们定义一个装饰器类它实现了Beverage接口并持有一个Beverage对象的引用。 public abstract class CondimentDecorator implements Beverage{protected Beverage beverage; ​public CondimentDecorator(Beverage beverage) {this.beverage beverage;} ​Overridepublic String getDescription() {return beverage.getDescription();} ​Overridepublic double cost() {return beverage.cost();} } 6.4. 创建具体装饰角色 最后我们创建具体的装饰类比如Milk和Sugar它们都继承自CondimentDecorator并添加自己特有的功能如描述和价格。 public class Milk extends CondimentDecorator{public Milk(Beverage beverage) {super(beverage);} ​Overridepublic String getDescription() {return beverage.getDescription() , Milk;}Overridepublic double cost() {return .10 beverage.cost();} } public class Sugar extends CondimentDecorator{public Sugar(Beverage beverage) {super(beverage);} ​Overridepublic String getDescription() {return super.getDescription() , Sugar;}Overridepublic double cost() {return .10 super.cost();} } 6.5. 创建客户端测试制作咖啡 最后我们通过一个客户端类来展示如何使用这些装饰器来构建和展示不同的咖啡组合。 public class MakeCoffee {public static void main(String[] args) {Beverage beverage new Espresso();System.out.println(beverage.getDescription() $ beverage.cost()); ​Beverage beverage2 new Milk(new Espresso());System.out.println(beverage2.getDescription() $ beverage2.cost()); ​Beverage beverage3 new Milk(new Sugar(new Espresso()));System.out.println(beverage3.getDescription() $ beverage3.cost()); ​// 可以继续添加更多的装饰器如摩卡、香草等} } 6.6. 测试结果 以下为示例运行结果 在上面的例子中我们首先创建了一个Espresso对象并直接打印了它的描述和价格。然后我们创建了一个加牛奶的Espresso即Milk(new Espresso())并打印了它的描述和价格。最后我们创建了一个既加牛奶又加糖的Espresso即Milk(new Sugar(new Espresso()))并打印了它的描述和价格。这样我们就可以看到装饰器模式如何动态地给对象添加额外的职责。 七、总结 装饰器模式是一种强大的设计模式它提供了一种灵活的方式来动态地给对象添加额外的职责。通过组合而非继承的方式装饰器模式能够在不改变对象接口的情况下为对象添加新的功能从而提高了系统的灵活性和可扩展性。然而我们也需要注意到装饰器模式的缺点并在设计系统时权衡其利弊以确保系统既灵活又易于理解和维护。 在实际应用中我们应该根据具体的需求和场景来选择合适的设计模式。对于需要动态扩展功能且保持接口不变的场景装饰器模式无疑是一个值得考虑的选择。
http://www.hkea.cn/news/14555390/

相关文章:

  • wordpress 增删改查seo实战密码第三版pdf
  • 免费微信网站制作平台怎么看网站开发的技术
  • 老年公寓网站模板淘宝客做的好的几个网站
  • 石大远程网页设计与网站建设答案济南环保行业网站开发
  • 微表单网站做公众号推广的公司
  • 网站推广合作学院网站建设流程
  • 麻将棋牌网站开发广告推广软文案例
  • 做网站找哪家公司网站右下角弹出广告代码
  • 用多说的网站wordpress凌风教程
  • 成都展示型网站开发造价人才网
  • 手机版素材网站网站域名过期怎么做
  • 使用阿里云建网站建材做网站好吗
  • 无锡市网站搭建seo推广有哪些公司
  • dz网站模板重庆神态网站建设
  • 宁波网站建设信任荣盛网络湖南常德米粉
  • 沧州网站建设网海申罗湖网站建设58
  • 企业做网站还是做平台好网站建设后如何修改
  • 营销型网站平台建设女人与马做受网站
  • 北京东城做网站建筑公司招聘信息
  • 门户网站建设会议纪要网站软件免费下载大全
  • 网站建设哪里有wordpress怎么对接公众号
  • 河北省住房城乡建设局网站首页鹤壁百度网站建设
  • 盐山县做网站价格自己如何做网站建设
  • 做网站平面一套多少钱重庆游戏网站开发
  • 东莞免费网站建站模板做网站浏览器标签一般放哪
  • 学做网站能找到工作么百度关键词流量查询
  • 湖北网站建设南京做网站seo的
  • 四川住房建设部官方网站课程网站课程资源建设
  • 南京网站建设流程沈阳工程招标信息网
  • 北京大兴行业网站建设公司北京网站设计建设