
设计模式
YX_BB
Android开发工程师
展开
-
设计模式演化之享元模式
定义使用共享对象有效的支持大量细粒度的对象演化1.单例模式单例模式对于一个类,只能拥有它的一个实例。单例模式实现了绝对意义上的对象共享,使用共享对象带来的好处是显而易见的。减少内存的消耗避免频繁的创建和销毁对象带来的性能损耗但是单例模式由于只能有一个实例,很难适用复杂多变的场景。一般我们只会把单例模式的写法应用到一些工具类的定义上,这些类通常只有方法没有成员变量,或者说成员变量的值只有一种,而不会有什么变化。而一旦成员变量可以有多重值,单例模式基本就没办法定义了。因为单例模式是需要对外屏蔽原创 2020-06-30 17:25:26 · 5873 阅读 · 0 评论 -
设计模式演化之桥接模式
定义将抽象部分与实现部分分离,使它们都可以独立的变化。演化1.请设计一个绘图工具,功能比较简单,它能绘制不同的图形,和不同的颜色。为了让绘制对象具备统一的绘制行为,我们一般会抽象出来Shape和Color两个接口。public interface Shape { void drawShape();}public interface Color { void drawColor();}2.想让一个类具备两个接口的功能,可以让具体的绘制对象去实现这两个接口,如绘制一个红色的圆原创 2020-06-29 16:12:13 · 5829 阅读 · 0 评论 -
设计模式演化之装饰模式
定义向现有的对象添加新的功能,并不改变其结构演化1.一般情况下如果需要增加一个类的功能,且不改变它的源码,我们会直接使用继承的方式来扩展一下。原创 2020-06-29 12:24:38 · 5784 阅读 · 0 评论 -
设计模式演化之动态代理
前言承接上文原创 2020-06-22 18:57:39 · 5955 阅读 · 0 评论 -
设计模式演化之代理模式
定义为其他对象提供一个代理以控制对这个对象的访问演化1.我们平时写代码的时候,免不了要用到一些日志分析工具,来记录代码执行过程中产生的数据,这些工具通常会由第三方提供。他们封装的非常好,...原创 2020-05-11 10:54:02 · 6552 阅读 · 0 评论 -
设计模式演化之外观模式
定义要求一个子系统的外部与内部的通信必需通过一个统一的对象执行,该模式提供一个高层的接口,使得子系统容易复用演化在我们的开发生涯中,免不了使用各种各样的第三方库。如Gson,EasyPermissions,Retrofit2,EventBus等。我们会发现它们都有一个共同的特点:尽管源码的内容很多,Java类的文件也有许多。但在我使用的时候会发现往往只需要调用某一个类的方法就能使用这个系统中...原创 2020-05-04 21:11:13 · 6246 阅读 · 0 评论 -
设计模式演化之策略模式
定义针对一组算法,把他们封装到共同的接口类中,从而使得它们可以达到相互替换的目的。演化1.实现一个学籍管理系统的主页,可以允许老师和学生登录。两者能看到主页页面相似,但也存在着一些差别。在这种情况下,如果单独为两者各创建一个主页就会显得浪费了。因此我们一般会在主页里边通过身份判断来执行有差异的功能。如加载页面控件:public class MainPager { publ...原创 2020-05-03 21:54:58 · 6380 阅读 · 0 评论 -
设计模式演化之观察者模式3——仿EventBus实现
前言无论是设计模式演化之观察者模式1还是设计模式演化之观察者模式2中的写法,我们在注册观察者之前都有一个前提,观察者需要持有被观察者的引用,然后调用被观察者的注册方法。现在我们换一个场景:依然定义一个观察则Observer,现在要求程序运行中,所有被观察者Subject的改变事件都要通知到Observer。这在我们现在场的景中显然就无法做到了。改变Subject的地方可能有很多,且会动态变化。...原创 2020-05-01 20:46:57 · 6244 阅读 · 0 评论 -
设计模式演化之观察者模式2——仿LiveData实现
前言在设计模式演化之观察者模式1中,我们实现了一个经典的观察者模式,下边继续对观察者模式进行优化,以便于能够在各种场景下更好的工作。优化1.我们在Subject中新增多个属性。然后一下Subject类的名字,使它更符合业务场景。现在我们要观察一个User类多个属性的变化。public class User { private String name; private in...原创 2020-05-01 11:18:52 · 6445 阅读 · 0 评论 -
设计模式演化之观察者模式1——经典实现
定义定义一种对象之间的一对多关系,当一个对象状态改变时,所有依赖于它的对象都得到消息,并刷新。演化1.定义Subject和Observer两个类,现在要求当Subject对象中的一个属性改变时,Observer对象要把这个属性实时显示出来。在代码中我们可以这么写:让Subject对象持有Observer对象的引用,当属性改变时,调用Observer的update()方法。(1) 定义Sub...原创 2020-05-01 11:11:08 · 8017 阅读 · 1 评论 -
设计模式演化之原型模式
定义原创 2020-04-24 11:21:43 · 6684 阅读 · 0 评论 -
设计模式演化之建造者模式
定义将一个复杂对象的创建与表示分离,使得同样的创建过程可以创建不同的标识演化1.定义一个电脑类public class Computer { private String cpu; private String mainBoard; private String memory; private String displayAdapter; priva...原创 2020-04-21 16:09:06 · 6581 阅读 · 0 评论 -
设计模式系列索引
前言设计模式已经是一个被写烂了的话题,相关的文章和示例数不胜数,按道理来说这一系列的文章可以说是石沉大海了。但我还是要写,总归还是有自己的里有。文章风格不同的文章可以有相同的话题,却可以有不同的论述风格。或许真的会有相应风格的读者能从这里得到启发呢?我们对一个知识点的掌握是可以分层次的了解:知道有这么个知识,当在别的地方提到它时,知道它的大概意思,不至于一头雾水。初步应用:能看懂这个知...原创 2020-04-20 17:19:58 · 6619 阅读 · 0 评论 -
设计模式演化之工厂模式
定义由一个工厂类根据参数来决定创建哪一种产品的实例场景:简单工厂模式的演变定义一个电脑类public class Computer { private String name; public Computer(String name) { this.name = name; } public void start() { S...原创 2020-04-16 10:15:08 · 6509 阅读 · 0 评论 -
设计模式演化之单例模式
定义:一个类只有一个实例,并提供一个访问它的全局访问点。原创 2020-02-24 18:07:05 · 6333 阅读 · 0 评论