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

一个简易网站怎么做营销代码是什么

一个简易网站怎么做,营销代码是什么,网站建设方案200字,网站开发tahmwlkj文章目录 一、装饰器模式的定义二、个人理解举个抽象的例#xff08;可能并不是很贴切#xff09; 三、例子1、菜鸟教程例子1.1、定义对象1.2、定义装饰器 3、JDK源码 ——包装类4、JDK源码 —— IO、OutputStreamWriter5、Spring源码 —— BeanWrapperImpl5、SpringMVC源码 … 文章目录 一、装饰器模式的定义二、个人理解举个抽象的例可能并不是很贴切 三、例子1、菜鸟教程例子1.1、定义对象1.2、定义装饰器 3、JDK源码 ——包装类4、JDK源码 —— IO、OutputStreamWriter5、Spring源码 —— BeanWrapperImpl5、SpringMVC源码 —— HttpHeadResponseDecorator 四、其他设计模式 一、装饰器模式的定义 别名包装模式Wrapper Pattern类型结构型模式。目的指在不改变现有对象结构的情况下动态地给该对象增加一些职责额外功能。 二、个人理解 给对象添加新功能时并不是在对象类中直接添加而是在装饰器类中添加。 在装饰类中添加新功能你可以增强原先对象的方法也可以给对象新增一个方法。 举个抽象的例可能并不是很贴切 假设要给人类添加开炮功能。 但由于这是人类咱们不能通过继承直接给人类添加开炮功能 所以我们就得通过组合将机器和人类组合起来、通过变相实现人类可以开炮。 这个机器就是装饰器。 坦克 人类 实现开炮功能高达 人类 实现开炮功能 三、例子 1、菜鸟教程例子 菜鸟教程的例子都将对象和装饰器进行了抽象处理实现了可替换对象和装饰器的实现类。 菜鸟教程原例子 个人觉得这样理解装饰器太绕了下面的例子就只保留了对象和装饰器。 1.1、定义对象 定义一个圆的对象 public class Circle{Overridepublic void draw() {System.out.println(Shape: Circle);} }1.2、定义装饰器 新增setRedBorder方法去设置红色边框。 public class RedCircleDecorator{private Circle c;public RedCircleDecorator(Circle c) {this.c c;}Overridepublic void draw() {decoratedShape.draw(); setRedBorder(decoratedShape);}private void setRedBorder(Circle decoratedShape){System.out.println(Border Color: Red);} }但我觉这个菜鸟这个例子并不能把装饰器模式特点表现出来。 因setRedBorder是私有并且只是把原先draw方法进行了增强。 这样的话代理模式也能实现代理模式也能增强原有的方法所以这里并不能把装饰器模式特点表现出来。 所以我改了一下。 public class ColorCircleDecorator{private Circle c;public RedCircleDecorator(Circle c) {this.c c;}Overridepublic void draw() {decoratedShape.draw();System.out.println(画了个普通的圆); }public void drawRedCircle(Circle decoratedShape){decoratedShape.draw();System.out.println(画了个红色的圆);}public void drawBlueCircle(Circle decoratedShape){decoratedShape.draw();System.out.println(画了个蓝色的圆);} }这个例子保留了原先的draw功能又新增了drawRedCircle和drawBlueCircle功能。 3、JDK源码 ——包装类 包装类也运用了装饰器模式。 将基本类型 转 包装类 的同时还提供各种转换类型的功能。 4、JDK源码 —— IO、OutputStreamWriter OutputStreamWriter同时运用了装饰器模式适配器模式。 这里我们拿装饰器部分来讲。 FileOutputStream fos new FileOutputStream(new File(Y:/学习资料.md)); OutputStreamWriter osw new OutputStreamWriter(fos); osw.append(新资料xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx);原本FileOutputStream 是原本没有append功能的 而在中OutputStreamWriter 添加append功能。 源码 public class OutputStreamWriter extends Writer {private final StreamEncoder se;public OutputStreamWriter(OutputStream out) {super(out);se StreamEncoder.forOutputStreamWriter(out, lockFor(this),out instanceof PrintStream ps ? ps.charset() : Charset.defaultCharset());}Overridepublic Writer append(CharSequence csq) throws IOException {if (csq instanceof CharBuffer) {se.write((CharBuffer) csq);} else {se.write(String.valueOf(csq));}return this;} } 可以看到虽然OutputStreamWriter 重写了append方法。 但构造器里OutputStream又被新的装饰器StreamEncoder接收。 而StreamEncoder类就已经通过继承Writer 增加了append方法。 public final class StreamEncoder extends Writer {private final OutputStream out;private StreamEncoder(OutputStream out, Object lock, CharsetEncoder enc) {super(lock);this.out out;this.ch null;this.cs enc.charset();this.encoder enc;this.bb ByteBuffer.allocate(INITIAL_BYTE_BUFFER_CAPACITY);this.maxBufferCapacity MAX_BYTE_BUFFER_CAPACITY;}public static StreamEncoder forOutputStreamWriter(OutputStream out, Object lock, Charset cs) {return new StreamEncoder(out, lock, cs);} }5、Spring源码 —— BeanWrapperImpl BeanWrapperImpl类是对BeanWrapper接口的默认实现它包装了一个bean对象缓存了bean的内省结果并可以访问bean的属性、设置bean的属性值。 BeanWrapperImpl功能还挺复杂的大家可以自行去看源码我就不贴出来了。 5、SpringMVC源码 —— HttpHeadResponseDecorator HttpHeadResponseDecorator 给ServerHttpResponse 添加了writeWith、writeAndFlushWith的功能。 public class HttpHeadResponseDecorator extends ServerHttpResponseDecorator {public HttpHeadResponseDecorator(ServerHttpResponse delegate) {super(delegate);}public final MonoVoid writeWith(Publisher? extends DataBuffer body) {return this.shouldSetContentLength() body instanceof Mono ? ((Mono)body).doOnSuccess((buffer) - {if (buffer ! null) {this.getHeaders().setContentLength((long)buffer.readableByteCount());DataBufferUtils.release(buffer);} else {this.getHeaders().setContentLength(0L);}}).then() : Flux.from(body).doOnNext(DataBufferUtils::release).then();}private boolean shouldSetContentLength() {return this.getHeaders().getFirst(Content-Length) null this.getHeaders().getFirst(Transfer-Encoding) null;}public final MonoVoid writeAndFlushWith(Publisher? extends Publisher? extends DataBuffer body) {return this.setComplete();} } 四、其他设计模式 创建型模式 结构型模式 1、设计模式——装饰器模式Decorator Pattern Spring相关源码 行为型模式 1、设计模式——访问者模式Visitor Pattern Spring相关源码2、设计模式——中介者模式Mediator Pattern JDK相关源码
http://www.hkea.cn/news/14490669/

相关文章:

  • 吴忠住房和城乡建设网站自学网站建设和seo
  • 一个网站主机多少钱邯郸手机网站开发价格
  • 专做海岛游的网站兰溪建设网站
  • 吴江住房和城乡建设局网站睢宁微网站开发
  • 做网站推广常识题库及答案网站被k后换域名 做301之外_之前发的外链怎么办
  • 怎么做网站黑链谷歌推广平台
  • 电商网站设计系列网站建设和管理心得
  • 湛江专业自助建站详情最新设计网站大全
  • 海洋专业做网站怎么查网站的域名备案价格
  • 定制网站建设的释义网站关键字描述
  • 装修公司网站源代码网站后台设计培训学校
  • 广州市公司网站建设平台如何申请网上商城
  • 如何进行一个网站建设移动端优秀网站
  • 上海网站建设 浦东领手工在家做的网站2019
  • 秋莱网站建设住房建设厅的网站首页
  • 常州网站建设企业网站制作深圳专业建站公司
  • 南宁经典网站建设企业所得税怎么算2021
  • 公司网站制作公司哪些网站可以做招商广告
  • 找婚庆公司去什么网站外贸营销型网站建站
  • 做网站优化有什么好处wordpress版小程序
  • 清远住房和城乡建设局网站定制相册哪个网站好
  • 南京当的网站常州市工程建设招标网
  • 网站建设教案旅游公司网站建设策划书
  • 做好一个网站需要多久江苏城乡建设部网站首页
  • 成都微信网站建设推怎么注册网站网址
  • 网站换空间不换域名对seo有影响吗沈阳建设工程信息网官网首页
  • 费县住房和城乡建设局网站仙居做网站的
  • 什么网站百度收录快网站建设验收合格确认书
  • 整站seo技术百度福州分公司
  • 建设网站企业登录纯注册app拉新挣钱