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

独立ip虚拟主机seo的流程是怎么样的

独立ip虚拟主机,seo的流程是怎么样的,辽宁建设委员会网站首页,株洲seo主管目录 一、定义二、结构三、优点四、使用场景五、代码示例六、截图示例 一、定义 1.在不改变现有对象结构的情况下,动态给该对象添加额外功能的模式 2.类B继承于类A,并将类A作为B类的属性(B类聚合A类) 3.BufferedInputStream、Buff…

目录

        • 一、定义
        • 二、结构
        • 三、优点
        • 四、使用场景
        • 五、代码示例
        • 六、截图示例

一、定义

  • 1.在不改变现有对象结构的情况下,动态给该对象添加额外功能的模式
  • 2.类B继承于类A,并将类A作为B类的属性(B类聚合A类)
  • 3.BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter都用到了装饰者模式

二、结构

  • 1.抽象构件角色(Component):定义一个抽象接口以规范准备接收附加责任的对象
  • 2.具体构件角色(Concrete Component):实现抽象构件,通过装饰角色为其添加一些职责
  • 3.抽象装饰角色(Decorator):继承或实现抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能
  • 4.具体装饰角色(ConcreteDecorator):实现抽象装饰的相关方法,并给具体构件对象添加附加的责任

三、优点

  • 1.装饰者模式可以带来比继承更加灵活性的扩展功能,使用更加方便,可以通过组合不同的装饰者对象来获取具有不同行为状态的多样化结果
  • 2.装饰者模式比继承更具良好的扩展性,完美的遵循开闭原则,继承是静态的附加责任,装饰者则是动态的附加责任
  • 3.装饰类和被装饰类可以独立发展,不会互相耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能

四、使用场景

  • 1.当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时
  • 2.不能采用继承的情况主要有两类:1.系统中存在大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长;2.类定义不能被继承(例如被final修饰的类)
  • 3.在不影响其它对象情况下,以动态、透明的方式给单个对象添加职责
  • 4.当对象的功能要求可以动态添加,也可以动态撤销时

五、代码示例

package com.learning.decorator;import lombok.AllArgsConstructor;
import lombok.Data;/*** 抽象构件角色* 快餐类*/
@Data
@AllArgsConstructor
public abstract class FastFood {// 价格private float price;// 名称private String name;public abstract float cost();public void printFastFood(){System.out.println(this.getName() + " " + this.cost());}
}
package com.learning.decorator;/*** 炒饭类* 具体构件角色*/
public class FriedRice extends FastFood{public FriedRice(){super(10, "炒饭");}@Overridepublic float cost() {return getPrice();}
}
package com.learning.decorator;/*** 炒面类* 具体构件角色*/
public class FriedNoodles extends FastFood{public FriedNoodles(){super(12, "炒面");}@Overridepublic float cost() {return getPrice();}
}
package com.learning.decorator;import lombok.Getter;
import lombok.Setter;/*** 装饰者类* 抽象装饰者角色*/
@Setter
@Getter
public abstract class Garnish extends FastFood{// 声明快餐类的变量private FastFood fastFood;public Garnish(FastFood fastFood, float price, String name) {super(price, name);this.fastFood = fastFood;}
}
package com.learning.decorator;/*** 鸡蛋类* 具体的装饰者角色*/
public class Egg extends Garnish{public Egg(FastFood fastFood){super(fastFood, 1, "鸡蛋");}@Overridepublic float cost() {// 计算价格return getFastFood().cost() + this.getPrice();}@Overridepublic String getName() {return super.getName() + getFastFood().getName();}
}
package com.learning.decorator;/*** 培根类* 具体的装饰者角色*/
public class Bacon extends Garnish{public Bacon(FastFood fastFood){super(fastFood, 1, "培根");}@Overridepublic float cost() {// 计算价格return getFastFood().cost() + this.getPrice();}@Overridepublic String getName() {return super.getName() + getFastFood().getName();}
}
package com.learning.decorator;public class Client {public static void main(String[] args) {FastFood fastFood = new FriedRice();// 点一份炒饭fastFood.printFastFood();// 炒饭中添加鸡蛋fastFood = new Egg(fastFood);fastFood.printFastFood();// 鸡蛋炒饭中加培根fastFood = new Bacon(fastFood);fastFood.printFastFood();// 再加一个鸡蛋fastFood = new Egg(fastFood);fastFood.printFastFood();}}

六、截图示例

在这里插入图片描述

http://www.shuangfujiaoyu.com/news/39153.html

相关文章:

  • 网站服务器名是什么济南网络推广公司
  • 系统网站怎么做响应式网站建设
  • 黄山网站开发河北网站seo地址
  • 深圳网站设计服务器
  • 做网站图片太大好吗下载百度导航最新版本
  • 安平县做百度网站电话淘宝指数网站
  • 怎么在自己做的网站上发视频教程seo优化网站优化排名
  • 便宜的做网站公司长沙网站关键词排名
  • 做得比较好的公司网站网址域名ip查询
  • 如何做英文网站的外链seo在哪学
  • 给出一个网站怎么做渗透测试申请一个网站
  • 百度搜索引擎收录入口谈谈你对seo概念的理解
  • 好看到让人久久不忘的电影seo和竞价排名的区别
  • 免费建站的网址seo的中文含义
  • 股票海选公司用什么网站网页设计与制作
  • 自己在网上怎么做网站seo是啥意思
  • html5 css3网站模版厦门seo推广公司
  • 龙湾网站建设免费国外ddos网站
  • 住房和城乡建设部网站行标淄博网站优化
  • 河南大学学科建设处网站网站推广的途径有哪些
  • 怎么做网站数据库营销软件商城
  • 怎么分析网站用什么技术做的平台推广公司
  • mobi网站怎么注册龙岗网站设计
  • 手机游戏网站seo推广seo教程
  • 做网站营销怎么去推广关键词排名零芯互联关键词
  • 怎样做英文网站seo网站推广助理
  • 手机企业网站建设怎么做好市场宣传和推广
  • 炎陵做网站免费网络推广软件
  • 济南专门做公司网站的公司百度引流推广怎么做
  • 网站视频做栏目一般一期多钱培训机构排名一览表