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

如何建立自已的购物网站徐水住房建设局网站

如何建立自已的购物网站,徐水住房建设局网站,网站开发的研究计划书,建设银行的网站怎么打开一. 前言 学习RxJava#xff0c;少不了介绍它的设计模式。但我看大部分文章#xff0c;都是先将其用法介绍一通#xff0c;然后再结合其用法#xff0c;讲解其设计模式。这样当然有很多好处#xff0c;但我个人觉得#xff0c;这种介绍方式#xff0c;对于没有接触过Rx…一. 前言 学习RxJava少不了介绍它的设计模式。但我看大部分文章都是先将其用法介绍一通然后再结合其用法讲解其设计模式。这样当然有很多好处但我个人觉得这种介绍方式对于没有接触过RxJava的朋友来说是不太友好的。 而我更倾向于先把对设计模式的认知拉齐然后在讲到用法的时候大家就会自然而然地理解了它怎么用到的设计模式从而也就更容易理解源码了一切都是水到渠成。 所以在本篇文章中大部分内容依然不会涉及RxJava但其实处处都有RxJava的影子。你需要做的就是完全理解本篇文章的内容没有理解到的地方请留言我都会一个一个认真看的。 不啰嗦了让我们开始正题吧 二. 观察者模式 1. 什么是观察者模式 一个比较书面化的定义是在对象之间定义一个一对多的依赖当一个对象状态改变的时候所有依赖的对象都会自动收到通知。 通俗一点理解假如说有两种对象一个是观察者一个是被观察者当一个被观察者对象发生变化的时候可以通知到所有的观察者对象。所有的观察者对象在接收到这个通知的时候可以做一些自己的处理。 2. Android中有没有例子 在Android中观察者模式其实很常见比如点击事件监听当view被点击的时候会通知到它的观察者也就是调用到你实现的onClick方法。再比如说EventBus比如LiveData其实都有运用到观察者模式。 3. 写个代码 本着KISS原则Keep It Simple, Stupid观察者模式比较简单所以在这里就不写代码了。 但值得一提的是RxJava中运用到的观察者模式和这里有一点微小的差别但根本思想是一样的。至于是什么微小的差别等讲到RxJava原理的时候你就理解了。 三. 装饰器模式 1. 什么是装饰器模式 可以通俗地理解为在不改变原有对象的基础上增强原有对象的功能。 2. Android中有没有例子 我们天天接触的Context就是一个非常典型的装饰器模式的例子。 Android中的Context对象是一个核心的组件它经常被装饰器进行功能扩展和定制。例如Activity、Service、BroadcastReceiver等都是Context的子类它们在基本的Context功能上添加了更多的生命周期管理、界面交互和事件处理等功能。 相当于在没有修改Context的基础上对Context进行了功能的增强。 3. 写个代码 因为我们平时关于装饰器模式写的不是很多所以我觉得有必要以一个很简单的例子向大家再进一步介绍下装饰器模式。 假设你经营一家咖啡店你的顾客可以根据自己的口味定制咖啡。首先我们有一个抽象的咖啡接口 public interface Coffee {String getDescription();double getCost(); }然后我们还有一个具体的咖啡实现 public class SimpleCoffee implements Coffee {Overridepublic String getDescription() {return Simple Coffee;}Overridepublic double getCost() {return 1.0;} }现在我们不满足于一个简单的咖啡SimpleCoffee而是要有一个可以加入牛奶的咖啡。相当于对原有的咖啡功能进行增强这时我们就可以借助装饰器模式来实现。 首先声明一个装饰器模式的抽象类也实现Coffee接口。 public abstract class CoffeeDecorator implements Coffee {protected Coffee coffee;public CoffeeDecorator(Coffee coffee) {this.coffee coffee;}Overridepublic String getDescription() {return coffee.getDescription();}Overridepublic double getCost() {return coffee.getCost();} }然后可以创建一个具体的装饰器类 public class MilkDecorator extends CoffeeDecorator {public MilkDecorator(Coffee coffee) {super(coffee);}Overridepublic String getDescription() {return super.getDescription() , Milk;}Overridepublic double getCost() {return super.getCost() 0.5;} }这样我们在使用的时候顾客可以选择加入咖啡而不会改变原有的咖啡类 Coffee simpleCoffee new SimpleCoffee(); Coffee coffeeWithMilk new MilkDecorator(simpleCoffee); System.out.println(coffeeWithMilk.getDescription()); // 输出Simple Coffee, Milk System.out.println(coffeeWithMilk.getCost()); // 输出1.5为什么实现了同一个接口 这里大家也会发现一个细节就是装饰器类和被装饰类都实现了同一个接口在这个例子中就是Coffee接口。这样做的好处就是可以统一以Coffee来接收装饰器类和被装饰类这使得客户端可以根据需求自由组合装饰器对象以获得所需的功能组合方便多次嵌套自己可以作为装饰器类也可以作为被装饰类实现更灵活符合“基于接口而非实现”的规范。 举个例子假如客户还想加糖那么就可以新增一个加糖的装饰器类 public class SugerDecorator extends CoffeeDecorator {public SugerDecorator(Coffee coffee) {super(coffee);}Overridepublic String getDescription() {return super.getDescription() , Suger;}Overridepublic double getCost() {return super.getCost() 0.3;} }然后顾客如果既想加糖又想加牛奶就可以这样实现 Coffee simpleCoffee new SimpleCoffee(); Coffee coffeeWithMilk new MilkDecorator(simpleCoffee); Coffee coffeeWithSuger new SugerDecorator(coffeeWithMilk);可以看到MilkDecorator本身既是装饰器类也是被装饰类使得原有对象的功能可以定制化地增强。而能够实现这些的原因就是装饰器类和被装饰类实现了同一个接口 四. 总结 本篇文章内容就到这里了其实本篇文章没有提到RxJava的具体知识但其实处处都有RxJava的影子。在本篇文章中你只需要牢牢掌握观察者模式和装饰器模式理解我举的例子就可以了。等看到RxJava的原理的文章时你就会豁然开朗 Android 学习笔录 Android 性能优化篇https://qr18.cn/FVlo89 Android 车载篇https://qr18.cn/F05ZCM Android 逆向安全学习笔记https://qr18.cn/CQ5TcL Android Framework底层原理篇https://qr18.cn/AQpN4J Android 音视频篇https://qr18.cn/Ei3VPD Jetpack全家桶篇内含Composehttps://qr18.cn/A0gajp Kotlin 篇https://qr18.cn/CdjtAF Gradle 篇https://qr18.cn/DzrmMB OkHttp 源码解析笔记https://qr18.cn/Cw0pBD Flutter 篇https://qr18.cn/DIvKma Android 八大知识体https://qr18.cn/CyxarU Android 核心笔记https://qr21.cn/CaZQLo Android 往年面试题锦https://qr18.cn/CKV8OZ 2023年最新Android 面试题集https://qr18.cn/CgxrRy Android 车载开发岗位面试习题https://qr18.cn/FTlyCJ 音视频面试题锦https://qr18.cn/AcV6Ap
http://www.zqtcl.cn/news/438911/

相关文章:

  • 公司网站建设的作用网站建设网上商城心得体会
  • 珠海网站建设的公司网站生成app
  • 营销网站建设的价格私人网站建设成本
  • 企业网站制作模板免费下载淘宝指数查询官网手机版
  • 做服装外单的网站购物网站首页图片
  • 网站建设到运营赚钱上海网络哪家比较好
  • 做网站要求高吗超炫网站
  • 贵卅省住房和城乡建设厅网站怎么快速仿wordpress站
  • 苏州网站建设排名clef wordpress
  • 罗定建设局网站汽车装饰网站源码
  • 网站用什么切版商城网站怎么建
  • 设计网站公司多少钱wordpress获取所有标签
  • 怎么看一个网站是哪个公司做的电子商务网站设计与规划
  • 邯郸哪里做网站优化网站建设如何排版
  • 济南网站建设设计制作公司找人做网站价格
  • 阿里网站年费续费怎么做分录大型的网站开发
  • 中山做网站费用广西壮族自治区住房和建设厅网站
  • vs2015做网站如何添加控件建设网站计划 ppt
  • 简述网站设计流程贵阳小程序开发软件公司
  • 营销网站建设的原则设计网站页面要注意什么
  • 上海怎么做网站国外网站 设计
  • 开发公司土地评估费计入土地价款优化搜狐的培训
  • 网站建设佰首选金手指三360怎么免费建网站
  • 网站万能密码修复苏州市建设中心网站
  • 如何搭建php网站网站制作的前期主要是做好什么工作
  • 站酷设计网站官网站不能正常显示出现后台代码
  • 网站域名改版微信公众号免费开通
  • 代网站建设如何对网站进行爬虫
  • 做公司+网站建设价格低网站两边广告代码
  • 服务器上怎做网站提升网页优化排名