代码的优雅-设计模式
文章平均质量分 57
在我们编写代码时,通常要注意代码的科学性,包括可扩展性,可复用性等等,这就需要对设计模式有深入的理解,本专栏着重介绍,设计模式的三种类型创建型,结构型,行为型
Alan杨亮
这个作者很懒,什么都没留下…
展开
-
委派设计模式
文章目录定义适用场景实例源码应用与其他模式区别优点缺点 定义 负责任务的调度和分配,将任务的分配和执行分离开来,可看作使特殊情况下的静态代理的全权代理,不属于gof23 适用场景 委派模式本身不知如何处理一个任务,把请求交个其他对象来处理 实现程序的解耦 实例 // 执行者 public class Boss { public void commond(String task,Leader leader) { leader.doing(task); } }原创 2021-07-14 12:17:17 · 81 阅读 · 0 评论 -
策略模式(行为型)
文章目录定义适用场景实例应用优点缺点 定义 将定义的算法,分别进行分装,让他们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户,避免多重if,switch 适用场景 系统中有很多类,区别仅在于它们的行为不同 一个系统需要动态的在几种算法选择一种 需要屏蔽算法规则 实例 public interface Promotion { void doPromotion(); } public class CardDiscount implements Promotion { @Ov原创 2021-07-14 11:52:54 · 100 阅读 · 0 评论 -
模板方法模式(行为型)
文章目录定义适用场景实例应用优点缺点 定义 指定义一个算法骨架,并允许子类为其中的一个或者多个步骤提供实现 模板方法使得子类在不改变算法的结构下重新定义算法的某些步骤 适用场景 一次性实现一个算法不变的部分,可变的部分由子类实现 各子类中公共的行为被提取出来并集中到一个公共的父类中,避免代码的重复 实例 public abstract class CourseTemplate { public boolean ischeck = false; public void setIsch原创 2021-07-14 11:51:40 · 81 阅读 · 0 评论 -
责任链模式(行为型)
文章目录定义适用场景实例应用优点缺点 定义 将链中的每个节点看作一个对象,每个节点负责的请求都不一样,并且会自动维护下一个节点对象 一个请求从链的首端发出时,会沿着链的路径依次传递给每个对象,直到有对象处理这个请求为止 适用场景 多个对象可以处理同一请求,但具体由哪个对象处理则在运动时动态决定 在不明确指定接受者的情况下,向多个对象中的一个提交请求 可动态指定一组对象请求 实例 public abstract class Hander<T> { protected Hander原创 2021-07-13 16:23:52 · 115 阅读 · 0 评论 -
组合模式(结构型)
定义 将单个对象和组合对象用相同的接口进行表示 使单个对象和组合对象保持一致的处理方式 适用场景 希望客户端可以忽略单个对象的组合对象的差异时 对象层次具备整体和部分,呈树型结构 实例 public abstract class Directory { public String name; public Directory(String name) { this.name = name; } protected abstract void sho原创 2021-07-13 15:48:25 · 80 阅读 · 0 评论 -
门面模式(结构型)
文章目录定义适用场景门面模式的实例应用与其他设计模式区别优点缺点 定义 提供一个统一的接口,用来访问子系统的一群接口,定义了一个高级接口,让子系统更容易使用 适用场景 子系统越来越复杂,增加门面模式提供简单接口 构建多层系统结构,利用门面模式作为每层的入口,简化调用层 门面模式的实例 public class Login { private String userName; public Login(String userName) { this.userName原创 2021-07-13 15:21:03 · 107 阅读 · 0 评论 -
享元模式(结构型)
文章目录定义适用场景享元模式实例与其他设计模式区别应用优点缺点特点 定义 对象池的一种实现,对象池可以避免不停的创建对象和销毁多个对象,消耗性能 共享细粒度对象,将多个对同一对象的访问集中起来 适用场景 系统底层开发,解决系统系统性能问题 系统有大量相似对象,需要缓冲池的场景 享元模式实例 public interface Ticket { void showInfo(String bunk); } public class TrainTicket implements Ticket {原创 2021-07-13 15:03:39 · 83 阅读 · 0 评论 -
装饰器模式(结构型)
文章目录定义适用场景装饰器实例实现与其他设计模式区别优点缺点 定义 再不改变原有对象的基础上,将功能附加到对象上,提供了比继承更具有弹性的替代方案 适用场景 用于扩展一个类的功能,添加职责 动态的给对象添加功能,这些功能可以再动态的撤销 装饰器实例 // 基类接口 public abstract class Cake { public abstract String getMsg(); public abstract int getPrice(); } // 接口实现 publi原创 2021-07-13 15:09:32 · 111 阅读 · 0 评论 -
适配器模式(结构型)
文章目录定义适用场景实例应用优点缺点 定义 将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作 适用场景 已经存在的类,它的方法和需求不匹配 随着软件的升级及维护而产生的解决方案 实例 // 原有类 public class Base220 { public int output(){ return 220; } } // 继承模式 不满足最少知道原则 public class Base5Adapt e原创 2021-07-11 17:30:08 · 80 阅读 · 0 评论 -
工厂设计模式
文章目录工厂模式简单工厂是什么关键词适用场景优缺点自己理解工厂方法是什么关键词适用场景优缺点自己理解抽象工厂方法是什么关键词适用场景优缺点自己理解工厂方法与抽象工厂方法 工厂模式 客户端不直接接触某个业务类的实现或者实现方法,而是通过工厂类来调度这些业务类的实现或者方法,客户端直接和工厂类接触,调用所需的业务实现 简单工厂 是什么 简单工厂模式(Simple Factory Pattern)是指由一个工厂对象 决定创建出哪一种产品类的实例。 属于创建型模式,但它不属于GOF,23种设计模式。 关键词 接原创 2021-07-11 17:21:43 · 122 阅读 · 0 评论 -
单例设计模式(创建型)
文章目录设计模式之单例设计模式一、什么是单例设计模式?二、单例设计模式的优缺点三、单例设计模式的使用四、单例设计模式分类五、单例模式思想的传递过程六、懒加载(Lazy Load)七、单例设计模式的线程安全问题八、单例模式分类剖析5.1 饿汉式单例模式(推荐)5.2 普通懒汉式单例模式5.3 同步锁懒汉式单例模式5.4 同步代码块懒汉式单例模式5.5 双重校验锁/双检锁单例模式(推荐)5.6 静态内部类/登记式单例模式(推荐)5.7 枚举单例模式九、解决多种破坏单例模式原则的方法9.1 反射破坏单例模式原则剖转载 2021-07-11 17:16:35 · 254 阅读 · 1 评论 -
Java设计模式基础概述
文章目录 一、什么是设计模式? 二、为什么要学习设计模式? 三、设计模式的基本要素3.1 设计模式的基本要素3.2 设计模式的其他要素 四、设计模式分类 五、认识23种设计模式 六、设计模式六大原则 七、分布式剖析六大设计原则7.1 单一职责原则7.2 开放封闭原则/开闭原则7.3 接口隔离原则7.4 依赖倒置原则7.5 里氏替换原则7.6 最少知道原则/迪米特法则 一、什么是设计模式? 软件设计模式,简称设计模式。是一种可以被反复使用、多人知晓、经过分类编目、代码设计经验的总结。简单来说,就是一种经原创 2021-07-11 17:09:31 · 116 阅读 · 1 评论