自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

魔法师之家

技术宅改变世界 ↖(^ω^)↗

  • 博客(27)
  • 收藏
  • 关注

原创 Kotlin协程设计方案(Kotlin Coroutines Design Proposal 中文版)

Kotlin 协程设计方案(Kotlin Coroutines Design Proposal 翻译)

2022-07-07 17:22:23 952

原创 设计模式 - 总结

一篇文章包含七大设计原则和二十四种设计模式,简单易懂

2022-03-23 14:09:15 412

原创 设计模式 -- 委派模式(Delegate Pattern)

允许对象组合实现与继承相同的代码重用,负责任务的调用和分配只对结果负责。优点通过任务委派能够将一个大型的任务细化,然后通过统一管理这些子任务的完成情况实现任务的跟进,能够加快任务执行的效率。缺点​任务委派方式需要根据任务的复杂程度进行不同的改变,在任务比较复杂的情况下可能需要进行多重委派,容易造成紊乱。应用场景 当你要实现表现层和业务层之间的松耦合的时候。 当你想要编排多个服务之间的调用的时候。 当你想要再封装一层服务查找和调用时候 /**

2022-03-23 11:40:23 2730

原创 设计模式 -- 解释器模式(Interpreter)

给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。优点 扩展性好。由于在解释器模式中使用类来

2022-03-23 11:34:46 652

原创 设计模式 -- 中介者模式(Mediator Pattern)

中介者模式定义了一系列对象间的交互方式,使得这些对象相互作用而又不耦合在一起。“网状结构”,要求每个对象都必须知道它需要交互的对象。把这种“网状结构”改为“星形结构”的话,将大大降低它们之间的“耦合性”,这时只要找一个“中介者”就可以了。例如: 每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须让其他所有的朋友一起修改。只要在网上建立一个每个朋友都可以访问的“通信录”就解决了。 想租房,可以找“房屋中介”; 找工作,可以找“人才交流中心”帮忙。

2022-03-23 11:34:32 359 1

原创 设计模式 -- 访问者模式(Visitor Pattern)

封装一些作用于某些数据结构中的各元素的操作,它可以在不改变数据结构的前提下赋予这些元素新的操作。应用场景 对象结构比较稳定,但是需要在对象结构的基础上定义新的操作。 需要对同一个类的不同对象执行不不同的操作,但是不希望增加操作的时候改变这些类。 总结 准确识别出Visitor实用的场景,如果一个对象结构不稳定决不可使用,不然在增删元素时改动将非常巨大。 对象结构中的元素要可以迭代访问 Visitor里一般存在与元素个数相同的visit方法。 元

2022-03-23 11:32:05 8016 2

原创 设计模式 -- 状态模式(State Pattern)

允许一个对象在内部状态改变时改变它的行为。应用场景 一个对象的行为取决于它的状态,并且它在运行时根据状态改变它的行为。 代码中包含大量与对象状态相关的判断语句。 优点: 将不同的状态隔离 把各种状态的转换逻辑,分布到State的子类中,减少相互间依赖 增加新的状态非常简单 状态模式与责任链模式的区别状态模式和责任链模式都能消除 if-else 分支过多的问题。但在某些情况下,状态模式中的状态可以理解为责任,那么在这种情况下,两种模式都可以使用。

2022-03-22 17:47:15 1665

原创 设计模式 -- 备忘录模式(Memento Pattern)

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。应用场景 需要保存某个对象在某一时刻的状态。 外界想访问对象的状态,但是又不想直接暴露接口给外部,这时候可以将对象状态保存下来,间接的暴露给外部。 当你正在开发一个功能,这个功能需要存档的时候就应该想到它。例如游戏,文档编辑器等等,都需要在你下次重新打开的时候恢复到你关闭它时候的状态。 // 定义游戏Originato

2022-03-22 17:38:32 1813

原创 设计模式 -- 命令模式(Command Pattern)

将一个请求封装成一个对象,可以将不同的请求参数化,可以对请求就行排队、日志记录以及撤销等操作。应用场景 当需要将各种执行的动作抽象出来,使用时通过不同的参数来决定执行哪个对象 在不同的时刻,指定和排列请求。 需要支持撤销操作。 需要支持日志功能,这样当系统崩溃时,可以重做一遍。 需要支持事务操作。 请求调用者需要与请求接收者解耦时,命令模式可以使调用者和接收者不直接交互。 系统随机请求命令或经常增加、删除命令时,命令模式可以方便地实现这些

2022-03-22 17:32:58 1824

原创 设计模式 -- 责任链模式(Chain Of Responsibility Pattern)

为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。应用场景 多个对象可以处理同一个请求,但是具体由哪个对象处理在运行时动态决定。 在请求处理者不明确的情况下向多个对象中的一个提交请求。 需要动态指定一组对象的处理请求。 在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,请求会自动进行传递。所以责任链将请

2022-03-22 17:27:57 191

原创 设计模式 -- 迭代器模式(Iterator Pattern)

提供一个方法顺序访问一个容器内的元素,而又不暴露该对象的内部表示。public interface Iterator<E> { boolean hasNext(); E next(); //java8后加入的default方法 ...}public interface Iterable<T> { Iterator<T> iterator(); //java8后加入的default方法 ...

2022-03-22 17:13:15 1160

原创 设计模式 -- 观察者模式(Observer Pattern)

定义对象间一对多的依赖关系,每当这个对象发生改变时,其他对象都能收到通知并更新自己。应用场景 关联行为场景 事件多级触发场景 跨系统的消息交换场景,例如消息队列,事件总线的处理机制。 MySubject类就是我们的主对象,Observer1和Observer2是依赖于MySubject的对象,当MySubject变化时,Observer1和Observer2必然变化。AbstractSubject类中定义着需要监控的对象列表,可以对其进行修改:增加或删除被监控对象,

2022-03-22 17:07:52 397

原创 设计模式 -- 模板方法模式(Template Method Pattern)

定义一个操作的算法框架,而将具体实现延迟到子类中进行,使得子类在不改变整体算法框架的基础上,可以自定义算法实现。应用场景 多个子类有公有的方法,并且逻辑基本相同时。 重要复杂的算法可以把核心算法设计为模板方法,具体细节则由子类实现 重构代码时,把相同的代码抽取到父类中,然后通过钩子函数约束其行为。 它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。① 模板方法:定义了算法的骨架,按某种顺序调用其包

2022-03-22 16:57:32 466

原创 设计模式 -- 策略模式(Strategy Pattern)

策略模式定义了一系列的算法,并将每一个算法封装起来,使他们可以相互替换。策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。应用场景 针对同一类型的问题有多种处理方式,仅仅是具体的行为有差别时。 需要安全的封装多种同一类型的操作时。 出现同一抽象类的多个子类,而又需要使用if-else来选择子类时。 当存在的策略很多时,客户端管理所有策略算法将变得很复杂,如果在环境类中使用策略工厂模式来管理这些策略类将大大减少客户端的工作复杂度。

2022-03-22 16:04:20 1558

原创 设计模式 -- 享元模式(Flyweight Pattern)

使用共享对象可以有效的支持大量的细粒度对象。应用场景主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。例如:缓存,对象池;Android中: Message.obtain通过重用Message对象来避免大量的Message对象被频繁的创建和销毁。FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新对象,FlyWeigh

2022-03-22 15:57:18 2791

原创 设计模式 -- 组合模式(Composite Pattern)

将对象组成树形结构以表示整体-部分的层次结构,使得用户对单个对象和组合对象的使用具有一致性。Android的View体系的设计方式使用场景 当你的程序结构有类似树一样的层级关系时,例如文件系统,视图树,公司组织架构等等 当你要以统一的方式操作单个对象和由这些对象组成的组合对象的时候。 透明方式将所有对外操作都放在 Component,叶子节点也得提供这些接口,虽然它实际上不支持这些操作。安全方式只将叶子节点与组合对象同时提供的操作放在 Component 。

2022-03-22 15:40:16 135

原创 设计模式 -- 桥接模式(Bridge Pattern)

将抽象与实现分离,使它们可以独立变化。handle、body模式 ; 接口模式应用场景 如果一个系统需要在抽象部分和实现部分增加更多的灵活性,避免两种变化的时候相互影响。 如果不希望使用继承而增加系统的复杂度,可以考虑使用桥接模式。 一个类存在两个独立变化的纬度,且这两个纬度都希望进行扩展。 当一个类存在两个独立变化的维度,且这两个维度都需要进行扩展时。 当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时。 当一个系统需要在构件

2022-03-21 16:52:55 415

原创 设计模式 -- 外观模式(Facade Pattern)

对外提供简单的交互接口,隐藏内部的复杂性。类似SDK接口应用场景 子系统在迭代的过程中可以会不断变化,甚至被替代掉,给一个统一的访问接口,避免子系统的改变影响到外部的调用者。 当需要构建层次结构型的系统时,为各层子系统提供访问的接口进行通信,避免直接产生依赖。 例如:聚合广告SDK;ShareSDK: 聚合社交媒体的;Ping++:聚合支付的,还有聚合各种小程序开发的,聚合各社交平台发布文章或者视频的等等。 // 列表接口public interface Lis

2022-03-21 16:43:14 136

原创 设计模式 -- 代理模式(Proxy)

为其他对象提供一种代理以控制对这个对象的访问代理模式按照代理类运行前是否存在还可以分为静态代理和动态代理。应用场景: 远程代理,这种方式通常是为了隐藏目标对象存在于不同地址空间的事实,方便客户端访问。例如,用户申请某些网盘空间时,会在用户的文件系统中建立一个虚拟的硬盘,用户访问虚拟硬盘时实际访问的是网盘空间。 虚拟代理,这种方式通常用于要创建的目标对象开销很大时。例如,下载一幅很大的图像需要很长时间,因某种计算比较复杂而短时间无法完成,这时可以先用小比例的虚拟代理替换真实的对象,消除

2022-03-21 16:39:07 470

原创 设计模式 -- 装饰器模式(Decorator Pattern)

动态的为对象增加一些额外的功能。装饰模式是在不必改变原类和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象使用场景 需要在运行时动态的给一个对象增加额外的职责时候 需要给一个现有的类增加职责,但是又不想通过继承的方式来实现的时候(应该优先使用组合而非继承),或者通过继承的方式不现实的时候(可能由于排列组合产生类爆炸的问题)。 public interface Sourceable { public void method()

2022-03-21 16:28:20 217

原创 设计模式 -- 适配器模式(Adapter Pattern)

设计模式 -- 适配器模式:别名:Wrapper(包装器)。适配器模式可以将一个类的接口,转换成客户端期望的另一个接口,让两个原本不兼容的接口可以无缝对接。

2022-03-21 16:22:19 254

原创 设计模式 -- 工厂模式(Factory Pattern)

设计模式 -- 工厂模式:简单工厂模式、工厂模式、抽象工厂模式

2022-03-21 16:11:48 291

原创 设计模式 -- 原型模式(Prototype Pattern)

设计模式 -- 原型模式;浅拷贝&深拷贝

2022-03-21 16:04:44 509

原创 设计模式 -- 建造者模式(Builder pattern)

设计模式:建造者模式:封装一个复杂对象的构建过程,可以按照流程来构建对象。

2022-03-21 15:48:51 370

原创 设计模式 -- 单例模式(Singleton Pattern)

设计模式 -- 单例模式:懒汉式单例、双层校验锁单例、容器单例(饿汉模式)、静态内部类单例、枚举单例

2022-03-21 15:29:10 361

原创 设计模式 -- 设计原则

设计模式七大设计原则:开闭原则、里氏替换原则、依赖倒转原则、单一职责原则、接口隔离原则、迪米特法则、合成复用原则

2022-03-21 15:17:24 528

原创 WTK模拟器出现多个temp文件夹

有时,在文件夹\Documents and Settings\Administrator\j2mewtk\2.5.2\appdb\DefaultColorPhone中,有不少以temp.DefaultColorPhone开头的文件夹,模拟器运行时都访问该文件夹下的资源。产生temp文件夹的原因是模拟器没有正常的退出,导致DefaultColorPhone文件夹被标识成一个在使用的文件夹,即被标识成...

2010-01-04 13:31:28 163

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除