设计模式
Lud_
积累点滴
展开
-
装饰者模式的使用~
文章目录装饰者模式的定义装饰者模式组成装饰者模式优缺点使用场景实例之前看rxjava时,看到有使用装饰者模式,于是来巩固一下~装饰者模式的定义装饰者模式:动态的给一个对象添加一些额外的职责。装饰者模式比生成子类来说更为灵活装饰者模式组成抽象构件接口或者抽象类,定义最核心的对象,也就是原始对象。具体构件具体构件实现抽象装饰角色一般是一个抽象类,实现接口或者抽象方法,引入抽象构件。具体装饰角色具体装饰角色,把基础核心功能装饰成其他东西装饰者模式优缺点原创 2020-08-31 20:08:53 · 171 阅读 · 0 评论 -
原型模式 (内含深拷贝和浅拷贝)
文章目录原型模式的定义原型模式的优点原型模式的使用场景原型模式的注意事项 (内涵深拷贝和浅拷贝)原型模式的定义原型模式的简单成都仅次于单例模式和迭代器模式。原型模式的定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象原型模式的通用类图如下:原型模式的核心是 clone 方法,通过该方法进行对象的拷贝,Java 提供了一个 Cloneable 接口来标记这个...原创 2020-02-23 23:11:55 · 286 阅读 · 0 评论 -
代理模式(普通代理到动态代理)
文章目录代理类示例代理模式的定义代理模式的应用代理模式的优点代理模式的使用场景代理模式的扩展普通代理强制代理代理是有个性的动态代理代理类示例以前很喜欢打游戏,和队友们一起打怪升级,那么通过一段简单的代码来表示我们打游戏的过程。代码如下:首先是一个游戏过程的接口类public interface IGamePlayer { // 登录游戏 void login(...原创 2020-02-20 00:20:29 · 363 阅读 · 0 评论 -
抽象工厂模式
在前面我们讲述了工厂方法模式,以女娲造人为例,我们有了黄 黑 白 三个肤色的人,但是正常我们又分为男人和女人。那么怎么改造能让我们能分别制造出黄黑白的男人和女人呢。接下来是具体代码案例:人类接口/** * 人类接口 */public interface Human { void getColor(); void talk(); void getSex(...原创 2019-08-23 00:30:12 · 159 阅读 · 0 评论 -
模版方法模式
文章目录1 模版方法模式的定义2 模版方法模式使用实例3 模版方法模式的应用3.1 模版方法模式的优点3.2 模板方法模式的缺点3.3 模板方法模式的使用场景模板方法模式的扩展1 模版方法模式的定义定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。模版方法的通用类图如下所示:模版方法模式其实非常简单,仅...原创 2019-08-24 23:30:34 · 152 阅读 · 0 评论 -
工厂方法模式
1 工厂方法的实例2 工厂方法的定义 3 工厂方法模式的应用 工厂方法的实例 开天辟地,未有人民,女娲博黄土做人。我们来为女娲做一个工厂,女娲通过工厂来造人,烤嫩了的是白人,烤焦了的是黑人,刚刚好的是黄种人。首先定义人类接口/** * 人类总称接口 */public interface Human { //获取皮肤颜色 void getColor();...原创 2019-08-12 00:01:12 · 131 阅读 · 0 评论 -
Android设计模式 Builder设计模式
Builder模式定义: 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以构建不同的标识。Builder模式的使用场景 (1)相同的方法,不同的执行顺序,产生不同的事件结果时。 (2)多个部件或零件,都可以装配到一个对象中,但是运行的结果又不相同时。 (3)产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候建造者模式非常合适。原创 2016-04-08 18:39:40 · 292 阅读 · 0 评论 -
Android设计模式 单例模式(使用容器实现单例模式)
这是一种另类的实现方式,代码如下:package demo;import java.util.HashMap;import java.util.Map;public class Singleton { private static Map<String, Object> objMap = new HashMap<String, Object>(); private Singleto原创 2016-03-31 18:16:00 · 613 阅读 · 0 评论 -
Android设计模式 单例模式(枚举单例)
package demo;public enum Singleton { INSTANCE;}这就是枚举模式的代码,枚举的最大特点就是简单,枚举和java普通类是一样的不仅能够拥有字段还能够有自己的方法。最重要的是默认枚举实例的创建是现成安全的,并且在任何情况下都是一个单例。 前几篇文章的枚举方式中反序列化依然可以创建一个新的实例。 反序列化提供了一个特别的钩子函数,原创 2016-03-31 18:07:12 · 974 阅读 · 0 评论 -
Android设计模式 单例模式(饿汉模式)
实现单例模式主要有以下几个关键点。 (1)构造函数不对外开放,一般为private; (2)通过一个构造方法或者枚举返回单例类的对象; (3)确保单例类的对象有且只有一个,尤其是在多线程的情况下; (4)确保单例对象在反序列化时不会重新构造对象;单例模式的简单实例(饿汉模式) 一个公司员工组成为例 一个公司只能有一个CEO 许多个VP和员工//员工类原创 2016-03-31 16:30:47 · 590 阅读 · 0 评论 -
Android设计模式 单例模式(静态内部类单例模式)
DCL虽然在一定程度上解决了资源消耗、多余的同步、现成安全问题,但是还是在某些情况下会出现失效问题。成为双重检查锁定(DCL)失效。建议使用如下代码:package demo;public class Singleton { private Singleton() { } public static Singleton getInstance() { ret原创 2016-03-31 17:46:16 · 1214 阅读 · 2 评论 -
Android设计模式 单例模式(Double CheckLock模式)
Double CheckLock简称DCL模式,优点是既能够保证用到的时候才初始化单例,又能够保证现成安全,且单例对象初始化后调用getInstance不进行同步锁。代码如下package demo;public class Singleton { private static Singleton mInstance = null; private Singleton() {原创 2016-03-31 17:17:46 · 497 阅读 · 0 评论 -
Android设计模式 单例模式(懒汉模式)
懒汉模式是声明一个静态对象,并且在用户第一次调用getInstance时进行初始化,而上篇文章的饿汉模式是在声明静态对象时就已经初始化,具体代码如下package demo;public class Singleton { private static Singleton instance; private Singleton() { } public static s原创 2016-03-31 16:43:53 · 857 阅读 · 0 评论