我们一起来读书吧
关注: 142 贴子: 2,164

  • 目录:
  • 软件及互联网产品
  • 0
    适配器模式(Adapter Pattern) 应用场景: 当需要将一个类的接口转换成客户端所期望的另一个接口时。 当需要使用一些已经存在的类,而这些类的接口与当前系统不兼容时。 在使用第三方库或框架时,其提供的接口与项目中的接口不一致,可以通过适配器模式进行转换。 优点: 提高了系统的灵活性和可扩展性。 降低了系统的耦合度,使得系统更加容易维护和升级。 使得原本不能一起工作的类能够协同工作。 缺点: 增加了系统的复杂性,因为需要
    乌拉 9-27
  • 0
    适配器模式(Adapter Pattern) 应用场景: 当需要将一个类的接口转换成客户端所期望的另一个接口时。 当需要使用一些已经存在的类,而这些类的接口与当前系统不兼容时。 在使用第三方库或框架时,其提供的接口与项目中的接口不一致,可以通过适配器模式进行转换。 优点: 提高了系统的灵活性和可扩展性。 降低了系统的耦合度,使得系统更加容易维护和升级。 使得原本不能一起工作的类能够协同工作。 缺点: 增加了系统的复杂性,因为需要
    乌拉 9-27
  • 0
    package main import ( "fmt" ) // 目标接口 type Washer interface { Wash() } // 源类 type OldWasher struct{} // 源类的方法 func (ow *OldWasher) SpinWash() { fmt.Println("Washing with spin wash") } // 适配器 type WasherAdapter struct { oldWasher *OldWasher } // 适配器实现目标接口 func (wa *WasherAdapter) Wash() { wa.oldWasher.SpinWash() } // 客户端代码 func main() { // 创建一个旧式洗衣机实例 oldWasher := &OldWasher{} // 创建适配器实例 washerAdapter := &WasherAdapter{oldWasher: oldWasher} // 使用适配器调用洗衣机的
  • 0
    4.1 结构型模式概述 内容概述:这一节可能介绍了结构型模式的基本概念和特点。结构型模式主要关注如何通过继承、组合和关联等方式来组合类和对象,以获得更大的结构灵活性。 关键点:理解结构型模式如何通过改变对象的组合和排列方式,提升系统的灵活性和复用性。 4.2 Adapter(适配器)模式 定义:适配器模式是将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类能够协同工作。 应用场景:常用于
  • 0
    4.1 ADAPTER(适配器)——类对象结构型模式 重点: 定义:适配器模式将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。 应用场景: 当你想使用一个已有的类,而其接口与需求不符。 创建一个可以重复使用的类,该类能与其他不相关或不可预见的类协同工作。 实现方法: 类适配器:通过多重继承来实现适配器。 对象适配器:通过组合来实现适配器。 感想: 适配器模式非常实用,尤其是在处
  • 0
    设计模式:可复用面向对象软件的基础》第4节,即“结构型模式”一章,给我留下了深刻的印象。这一章节详细探讨了如何通过组合类和对象来构建更复杂的软件结构,不仅拓宽了我对面向对象编程的理解,也让我在实际软件开发中找到了更多灵活性和可复用性的解决方案。 首先,结构型模式的核心思想在于如何通过不同的方式组合类和对象,以实现更大的系统结构。这种组合不仅限于简单的接口或实现继承,更包括了对对象间关系的深入理解和运
  • 0
    适配器模式用于将不兼容的接口转换为所需接口,解决接口不匹配问题;桥接模式把抽象与实现分离,使两者能独立变化,提高系统可维护性和可扩展性;组合模式以树形结构表示 “部分 - 整体” 层次,让用户对单个对象和组合对象使用具有一致性;装饰器模式动态给对象添加额外职责,相比生成子类更灵活,在不改变原有对象基础上增加新功能。这四种设计模式在不同场景下各有其独特价值,能有效提高软件的灵活性、可维护性和可扩展性。 将一
    FWAN 9-27
  • 0
    3.3 工厂模式(Factory Pattern) 工厂模式是一种创建对象的设计模式,它通过将对象的创建过程封装在一个工厂类中,避免了在客户端代码中直接使用构造函数。这种模式使得代码更加灵活和可维护,尤其是在需要动态决定创建哪个类的实例时。 优点: 提高代码的可扩展性:只需增加新的子类,而不影响现有代码。 提供了一种解耦创建和使用对象的方式,客户端不需要知道具体的类名和创建逻辑,只需依赖工厂类。 缺点: 增加了系统的复杂性,尤其
    FWAN 9-27
  • 0
    适配器模式用于将不兼容的接口转换为所需接口,解决接口不匹配问题;桥接模式把抽象与实现分离,使两者能独立变化,提高系统可维护性和可扩展性;组合模式以树形结构表示 “部分 - 整体” 层次,让用户对单个对象和组合对象使用具有一致性;装饰器模式动态给对象添加额外职责,相比生成子类更灵活,在不改变原有对象基础上增加新功能。这四种设计模式在不同场景下各有其独特价值,能有效提高软件的灵活性、可维护性和可扩展性。 将一
    yy20000601 9-27
  • 0
    适配器是一个可以同时与客户端和服务交互的类:它在实现客户端接口的同时封装了服务对象。适配器接受客户端通过适配器接口发起的调用,并将其转换为适用于被封装服务对象的调用。 适配器模式充当两个不兼容接口之间的桥梁,属于结构型设计模式。它通过一个中间件(适配器)将一个类的接口转换成客户期望的另一个接口,使原本不能一起工作的类能够协同工作。 当一个复杂的服务已经在线上运行且无人维护,现在一个新的服务需要使用这
  • 0
    第四章介绍的是结构型模式,结构型模式通过继承实现类和对象之间的组合,因为可以在运行时改变对象的组合关系,所以具有强大的灵活性 在showcase接口中就使用了适配器模式,支持AB实验、业务白名单等逻辑,实现业务解耦 桥接模式实现了接口和实现的分离,降低了编译时的依赖性,提升了扩展性 装饰模式可以动态地给对象添加额外的职责,比生成子类更加灵活,比如业务中的加解密就可以使用装饰模式,实现业务透明
    巴顿1968 9-27
  • 0
    1、适配器模式 提高类的复用性,更好的灵活性,解耦 2、桥接模式 将抽象部分与它的实现部分分离,更好的扩展性、分离抽象和实现减少耦合 3、组合模式 通过将对象组合成树形结构,使得用户可以一致地对待单个对象和组合对象,适用于需要表示部分-整体层次结构的场景。 4、装饰模式 装饰模式通过动态地给对象添加职责,提供了一种比生成子类更灵活的功能扩展方式,适用于需要动态扩展对象功能的场景
  • 0
    适配器模式: 适配器模式充当两个不兼容接口之间的桥梁,属于结构型设计模式。它通过一个中间件(适配器)将一个类的接口转换成客户期望的另一个接口,使原本不能一起工作的类能够协同工作。 当一个复杂的服务已经在线上运行且无人维护,现在一个新的服务需要使用这个服务,但是两个服务协议对不上,这个时候可以使用适配器模式。 桥接模式: 桥接模式的主要目的是将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接通常
    唐瑜tang 9-27
  • 0
    装饰器模式主要对现有的类对象进行包裹和封装,以期望在不改变类对象及其类定义的情况下,为对象添加额外功能。是一种对象结构型模式。需要注意的是,该过程是通过调用被包裹之后的对象完成功能添加的,而不是直接修改现有对象的行为,相当于增加了中间层。类似于python中的@装饰器。 1. 目的 可以动态的为同一类的不同对象加以修饰以添加新的功能。 2. 动机 灵活的对类对象功能进行扩展。 3. 优缺点 优点: 相比较于类的继承来扩展功能,
  • 0
    4.1-4.4主要介绍适配器、桥接、组合和装饰器: 1)适配器模式:适配器模式将一个类的接口转换成客户端希望的另一个接口。使得原本由于接口不兼容而不能一起工作的类可以一起工作。增强了系统的灵活性和复用性。主要结构如下: 目标接口(Target):定义客户需要的接口。 适配者类(Adaptee):定义一个已经存在的接口,这个接口需要适配。 适配器类(Adapter):实现目标接口,并通过组合或继承的方式调用适配者类中的方法,从而实现目标接口
  • 0
    3.3-3.6主要介绍工厂方法、原型、单例和创建型模式的整体讨论: 工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法使得一个类的实例化延迟到其子类,主要角色包括抽象产品类(Product)、具体产品类(Concrete Product)、抽象工厂类(Creator)和具体工厂类(Concrete Creator)。 原型:原型模式通过复制现有的实例来创建新的对象,而不是通过实例化类来创建对象。 主要角色包括原型接口(Prototype)、具体原型类
  • 0
    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间的协同工作,主要用于解决两个不兼容接口之间的通信问题。适配器模式通常用于实现一个中间层,使得原本由于接口不兼容而不能一起工作的类可以一起工作。 ### 特点: 1. **接口兼容性**:适配器模式使得不兼容的接口可以协同工作。 2. **解耦**:将客户端与服务端的实现解耦,客户端不需要知道服务端的具体实现。 3. **扩展性**:可以为多个不同的接口提供多个不同的适
  • 0
    1、适配器模式 提高类的复用性,更好的灵活性,解耦,适配器模式在实际应用中常用于使现有类与某些预期的接口兼容,从而提高代码的复用性和灵活性。 2、桥接模式 将抽象部分与它的实现部分分离,比如: 抽象部分: 程序的 GUI 层。 实现部分: 操作系统的 API。 抽象对象控制程序的外观, 并将真实工作委派给连入的实现对象。 3、组合模式 如果应用的核心模型能用树状结构表示, 在应用中使用组合模式才有价值。 类似军队:每支部队包括几
    yuanbli 9-27
  • 3
    4.1 适配器模式 充当两个不兼容接口之间的桥梁,属于结构型设计模式;适配器将一个类的接口转换成客户期望的另一个接口,使原本不能一起工作的类能够协同工作; 现实生活:读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡; 比如php连接数据库的方法:mysql,,mysqli,pdo,可以用适配器统一
  • 0
    4.1 Adapter(适配器)-类对象结构型模式 提高类的复用性,更好的灵活性,解耦 比如直播的相关接口都采用该模式,adsense里有适配器用来适配百度秀场和中台meta两种接口 4.2 bridge(桥接)-对象结构型模式 更好的扩展性、分离抽象和实现减少耦合 比如电视和遥控器就是桥接模式,遥控器是抽象部分,具体实现的电视可以是不同品牌和型号 4.3 composite(组合)-对象结构型模式 更好的灵活性 比如邮件组管理就可以使用这个模式,每个邮件组可以包含多个
    ROOT. 9-27
  • 3
    4.1 适配器模式(Adapter Pattern) 适配器模式的主要目的是将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式分为类适配器和对象适配器两种: 类适配器:通过多重继承来实现(在C++中),适配器继承了适配者类和目标接口。 对象适配器:通过组合来实现,适配器包含一个适配者对象,并实现目标接口。 适配器模式在实际应用中常用于使现有类与某些预期的接口兼容,从而提
    RRRRRR.... 9-26
  • 0
    当你希望使用某个类, 但是其接口与其他代码不兼容时, 可以使用适配器类。 适配器可担任两个对象间的封装器, 它会接收对于一个对象的调用, 并将其转换为另一个对象可识别的格式和接口。 这里是一个闪电接口硬盘插入windows电脑的场景 main.go文件 package adapter import ( "fmt" "testing" ) // 我有个硬盘是 闪电接口,现在我需要把硬盘插到 一个只有USB接口的Windows电脑上,怎么实现? func TestAdapter(t *testing.T) { client := &Client{} mac := &Mac{
  • 0
    最近搜索可以通过缓存在本地实现,热门搜索对应的数据要实时调用服务端接口获取,数据可以使用vuex进行保存,供全局使用。 菜单搜索可以通过getLocation获取地理坐标作为参数获取商铺信息,在onReachBootom内部实现上拉加载数据点餐: 开发时,要注意组件和业务解耦,不要在组件中写业务代码,比如不要在组件内部请求业务数据,在父组件中请求数据传递给子组件,Vue3中setup函数不存在this,所以要使用uni.createSelectorQuery().in(this)获取组件内部元素的节
    略略dbd 9-24
  • 0
    搜索组件: 搜索组件分为最近搜索和热门搜索,最近搜索可以通过缓存在本地实现,热门搜索对应的数据要实时调用服务端接口获取,数据可以使用vuex进行保存,供全局使用 菜单搜索: 可以通过getLocation获取地理坐标作为参数获取商铺信息,在onReachBootom内部实现上拉加载数据 点餐: 开发时,要注意组件和业务解耦,不要在组件中写业务代码,比如不要在组件内部请求业务数据,在父组件中请求数据传递给子组件 Vue3中setup函数不存在this,所以要使
  • 0
    最近搜索 可以通过缓存在本地实现,热门搜索对应的数据要实时调用服务端接口获取,数据可以使用vuex进行保存,供全局使用 菜单搜索 可以通过getLocation获取地理坐标作为参数获取商铺信息,在onReachBootom内部实现上拉加载数据点餐: 开发时,要注意组件和业务解耦,不要在组件中写业务代码,比如不要在组件内部请求业务数据,在父组件中请求数据传递给子组件,Vue3中setup函数不存在this,所以要使用uni.createSelectorQuery().in(this)获取组件内部元素的节
  • 0
    搜索组件: 搜索组件分为最近搜索和热门搜索,最近搜索可以通过缓存在本地实现,热门搜索对应的数据要实时调用服务端接口获取,数据可以使用vuex进行保存,供全局使用 菜单搜索: 可以通过getLocation获取地理坐标作为参数获取商铺信息,在onReachBootom内部实现上拉加载数据 点餐: 开发时,要注意组件和业务解耦,不要在组件中写业务代码,比如不要在组件内部请求业务数据,在父组件中请求数据传递给子组件 Vue3中setup函数不存在this,所以要使
    ant 9-24
  • 0
    input:在uniapp中仅仅当作输入框使用 type:input类型的有效值 text 文本输入键盘 number 数字输入键盘 均支持,注意iOS上app-vue弹出的数字键盘并非9宫格方式 idcard 身份证输入键盘 微信、支付宝、百度、QQ小程序 digit 带小数点的数字键盘 App的nvue页面、微信、支付宝、百度、头条、QQ小程序 小程序上只支持整型数字,在小程序平台输入浮点型需要digit input组件上有默认的min-height,如果设置的height低于min-height则height样式不起作用 软键盘弹出逻辑:App平台软键
  • 0
    使用vuex对搜索数据进行管理 通过地理位置获取附近商铺,底部通过onReachBottom加载更多 菜品详情组件维护
  • 0
    使用vuex进行了全局的状态管理,我们现在还没有引入,后期需要考虑 整体开发代码上,由于使用了vue2和vuex,其实跟vue的差别不大,需要特别注意的是,这里用到了大量内置的生命周期和API,比如onLoad生命周期、onReachBottom等方法 并且提供了获取位置等API封装,使用上更方便,功能更强大,但需要注意有些特性H5可能并不支持
  • 0
    * 封装搜索组件,独立维护功能模块代码,外层可通过show属性和close事件控制组件状态; * 提高组件扩展性,网络请求不放在子组件里,通过父组件传递给子组件; * Vue3中的setup函数内部是不存在this,替换成getCurrentInstance()函数;
    Ctao 9-23
  • 0
    菜品搜索页面,最近搜索和热门搜索。其中最近搜索使用本地缓存localStoage实现,热门搜索调用相关接口 关键词搜索页面,在onshow()函数中使用getLocation()获取地理位置坐标,在complete回调函数内调用getSearchGoods()方法,将搜索的关键词、地理位置的经度纬度以对象形式的参数传进去,获取附近商铺的菜品。在onReachBottom()函数中实现下拉到底部加载新数据。 点餐页面,商家位置组件(使用map组件),两个函数实现菜品的展示,左侧为菜品分类,右侧是菜
    CObvious77 9-23
  • 0
    1.组件路由跳转:使用navigator组件,open-type 默认为navigate,表示打开新页面,设置为redirect时,表示为重定向,url属性设置跳转的路径值,可以是相对路径也可以是绝对路径,设置为navigateBack表示返回。支持tab切换,设置为switchTab,跳转到tabBar中的页面,跳转后页面会全部出栈,所以跳转后的页面不支持返回。relaunch表示重新加载,页面会全部出栈,可以跳转到任意页面 。nairelactab切换hj 2. Api路由跳转:使用uni.navigateTo() 方法,保留当前页面,跳转到新的
  • 0
    uni-app是DCloud公司开发的一个基于Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等14个平台。 学习成本低: 采用Vue语法和微信小程序API,无额外学习成本 使用HBuilderX创建项目有两种方式 1.通过 HBuilderX 可视化界面创建 2.通过vue-cli命令行创建项目全局安装vue-cli,如果安装过vue-cli可省略此步骤npm install -g @vue/cli@4使用正式版(对应HBuilderX最新正式版)创建uni
    陈冲200 9-23
  • 0
    最近搜索和热门搜索。最近搜索使用本地缓存实现,热门搜索调用相关接口。 在onshow()函数中使用getLocation()获取地理位置坐标,在complete回调函数内调用getSearchGoods()方法,将搜索的关键词、地理位置的经度纬度以对象形式的参数传进去,获取附近商铺的菜品。在onReachBottom()函数中实现上拉加载数据。 两个函数实现菜品的展示,左侧为菜品分类,右侧是菜品展示数据。为了组件后期的可维护性和扩展性,尽量不要在组件内部请求数据,可以在组件请求
    Gyn_G 9-23
  • 0
    11.3 菜品搜索组件,分为最近搜索和热门搜索。最近搜索使用本地缓存实现,热门搜索的数据调用接口获取,存储在vuex中使用。在uni-app中,为了兼容各种平台,初始化数据建议放在mounted()函数中。 11.4 关键词搜索页面,在输入框输入搜索的关键词,跳转到菜品搜索页面,并展示相关菜品,根据用户最近距离最近的商铺展示。使用getLocation()函数获取地理位置的坐标。 11.5 点餐部分:点餐页面基础部分,菜品展示组件,菜品详情组件,套餐组成菜品组件
  • 0
    在这一章里,主要介绍的是组件。说起组件,什么是组件呢?这里沿用书中的定义:组件是一种自包含、可重用、可互操作的软件单位,它统一了数据和行为,通常以模块的形式存在,用于构建更大的系统。 对于组件来说,有一个与我们息息相关的词:组件化,这个词一般会跟插件化放在一起被提及,但本质上,组件化他是一种软件开发方法论,它将系统分解为独立可复用的模块(组件)来实现复杂系统的构建。组件化的主要目标是提高项目(或者
  • 0
    第七章讲的是单一职责原则:任何一个软件模块都应该只对某一类行为者负责。 文中以工资管理程序中计算工资和汇报工时函数举例:他们共同依赖一个汇总工时的方法,而当一方修改该依赖方法后可能会对另一方造成影响。说明:将不同行为者所依赖的代码强凑到了一起。 贴吧也有很多类似的代码,并在一些不同模块的公共函数中加各种参数来表示不同来源的处理,其中掺杂着一堆if-else逻辑,让代码越来越难以阅读理解。 文中举了第二个反例:
    coledepstr 9-23
  • 0
    工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。 工厂方法模式建议使用特殊的工厂方法来创建对象,而不是直接调用对象的构造函数。它允许子类重写工厂方法,从而改变创建的产品类型。 只有当产品具有共同的基类或接口时,子类才能返回不同类型的产品,同时基类中的工厂方法还应将其返回类型声明为这一共有接口。 调用工厂方法的代码不需要知道不同子类返回的实际对象之间的
    乌拉 9-20
  • 0
    1. 工厂模式 2. 单例模式 3. 原型模式 .clone
  • 0
    单例模式 单例模式与全局变量不同,它保证类只存在一个实例。除了单例类自己以外,无法通过任何方式替换缓存的实例。 实现方式: 在类中添加一个私有静态成员变量用于保存单例实例。 声明一个公有静态构建方法用于获取单例实例。 在静态方法中实现"延迟初始化"。该方法会在首次被调用时创建一个新对象,并将其存储在静态成员变量中。此后该方法每次被调用时都返回该实例。 将类的构造函数设为私有。类的静态方法仍能调用构造函
  • 0
    3.3 工厂方法(Factory Method)总结: 工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定要实例化的类是哪一个。这样,工厂方法使一个类的实例化延迟到其子类。 重点: 定义:工厂方法是一种创建对象的模式,允许类将对象的实例化推迟到子类中进行。 意图:解决类无法预见它必须创建的对象的情况。 参与者: 产品(Product):定义工厂方法创建的对象的接口。 具体产品(ConcreteProduct):实现产品接口。 创建者
  • 0
    3.3 Factory Method(工厂方法) 概述:工厂方法模式定义了一个用于创建对象的接口,但让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类进行。 应用:这种方式提供了一种将类的实例化逻辑与其使用逻辑分离的方法,增加了系统的可扩展性。当需要创建不同类型的对象,并且希望在运行时动态决定具体创建哪种类型的对象时,可以使用工厂方法模式。 3.4 Prototype(原型) 概述:原型模式是通过复制一个已经存在的实例来返回新的
  • 0
    1.工厂方法模式通过定义一个用于创建对象的接口,让子类决定实例化哪一个类。这一模式的核心在于将实例化过程委托给子类,从而实现了对象的创建与使用之间的解耦。 2.抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这一模式在支持多种产品族时尤为有用,可以使得系统更加灵活,能够应对不同的产品组合需求。通过抽象工厂,我们可以将一组产品的创建过程封装起来,使得客户代码在创建产品时不
  • 0
    3.3 工厂模式(Factory Pattern) 工厂模式是一种创建对象的设计模式,它通过将对象的创建过程封装在一个工厂类中,避免了在客户端代码中直接使用构造函数。这种模式使得代码更加灵活和可维护,尤其是在需要动态决定创建哪个类的实例时。 优点: 提高代码的可扩展性:只需增加新的子类,而不影响现有代码。 提供了一种解耦创建和使用对象的方式,客户端不需要知道具体的类名和创建逻辑,只需依赖工厂类。 缺点: 增加了系统的复杂性,尤其
  • 0
    抽象工厂是一个比较复杂的创建型模式; 它提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 何时使用&使用场景: 系统的产品有多于一个的产品族,而系统只消费其中某一族的产品时。 一个对象族(或一组没有任何关系的对象)都有相同的约束。 优点: 封装性,易于产品交换。由于具体工厂类在一个应用中只需在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,只需改变具体工程即可使用不
    扯诞🤪 9-20
  • 0
    工厂模式(对象创建型模式):定义一个用于创建对象的接口,让子类决定实例化哪个类。可以将对象的生产通过参数的方式进行生产,维护了参数与所需创建对象的关系,当需要更换所创建的对象时,只需要改参数与对象的映射关系,不用所有创建处都改;主要用于工具包和框架中。 原型模型(对象创建型模式):是一种实现对象复制的设计模式,它允许我们通过克隆已有对象来创建新的对象,而无需通过使用关键字"new"实例化类,避免创建很多

  • 发贴红色标题
  • 显示红名
  • 签到六倍经验

赠送补签卡1张,获得[经验书购买权]

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!

本吧信息 查看详情>>

小吧:小吧主共6

会员: 会员

目录: 软件及互联网产品