设计模式
苏察哈尔丶灿
我自横刀向天笑,笑完我就去睡觉。
展开
-
策略模式的思路整理
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。 这种类型的设计模式属于行为型模式。 例如,植物大战僵尸中不同的僵尸有不同的属性,如下表: 类型 外观 移动 攻击 普通僵尸 普通 朝一个方向移动 咬 旗手僵尸 普通 + 手持旗子 朝一个方向移动 咬 舞王僵尸 衣着华丽 太空步 召唤术 它们之间有相同的属性,也有各自独立的功能实现, 每种功能之间也并无依赖关系,互相独立。 设计代码如下: 定义移动接口类 package strategy;原创 2020-08-08 10:55:32 · 239 阅读 · 0 评论 -
装饰器模式的思路整理
在不改变原有对象的基础上,将新功能附加到原对象上, 例如生活中在拍照的基础上添加美颜,此功能就相当于一个装饰作用。 定义抽象接口做统一调用标准 package decorator; /** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/8 09:11 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */ public interface IComponent { void operation(); } 定义相机类 package decorator; /原创 2020-08-08 09:24:31 · 97 阅读 · 0 评论 -
适配器模式的思路整理
家用220v的电压经过手机充电器的适配可以转化为手机需要的5v电压, 就是一个最好的适配器的例子。 适配器要实现的功能接口 package adapter; /** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/7 16:41 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */ public interface ITarget { void output5v(); } 家用电压类 package adapter; /** * @Auther: 苏察哈原创 2020-08-07 16:51:43 · 146 阅读 · 0 评论 -
门面模式的思路整理
提供一致的对外访问接口,内部自己实现具体逻辑的调用 子接口一: package facade; /** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/7 16:09 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */ public class Client1 { public void method1(){ System.out.println("Client1 method1 doSomething...."); } } 子接口原创 2020-08-07 16:26:03 · 178 阅读 · 0 评论 -
享元模式的思路整理
目的是为了节省不必要的重复开销。尽可能减少相似类的重复创建, 可以想象有一个地图,里面有很多树,但是种类就那么几种, 所以不需要创建太多的树对象,这种情况并不适合用单例,可以采用享元模式。 树节点对象: package flyweight; /** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/7 15:40 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */ public class Tree { public final String name;原创 2020-08-07 15:56:34 · 115 阅读 · 0 评论 -
建造者模式的思路整理
定义需要创建的实体类 package builder; /** * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/7 11:29 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */ public class Product { private String param1; private String param2; private String param3; private String param4; private Str原创 2020-08-07 14:35:27 · 171 阅读 · 0 评论 -
单例设计模式的思路整理
单例的不同实现方式饿汉式懒汉式静态内部类 饿汉式 package singleton; /** * 饿汉式 线程安全 * 利用类加载机制,无需多余处理 * * @Auther: 苏察哈尔丶灿 * @Date: 2020/8/6 17:03 * @Slogan: 我自横刀向天笑,笑完我就去睡觉。 */ public class HungrySingleton { private static HungrySingleton instance = new HungrySingleton(原创 2020-08-06 17:46:50 · 147 阅读 · 0 评论 -
单例、懒汉模式的思路整理
采用双检锁/双重校验锁(DCL,即 double-checked locking) package single; /** * 懒汉模式的单例 * * @author 苏察哈尔丶灿 */ public class SingleCase { // 类的唯一实例 private static SingleCase instance = null; // 构造方法私有化,阻止外部生成对象 private SingleCase() { } /** * 第一种做法 *原创 2020-08-03 09:59:01 · 130 阅读 · 0 评论