
设计模式
康小孩
这个作者很懒,什么都没留下…
展开
-
设计模式之责任链模式
责任链模式(Chain): 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之前的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它位置。优点: 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了应用实例: 1、员工请假,不同的天数不同的的主管审批 2、如要进行网络请求,先检查url是否正确、再检查网络情况,再检查DNS解析情况等等,就可以使用责任链类图:代码实例:原创 2020-11-16 23:22:05 · 149 阅读 · 0 评论 -
设计模式之状态模式
状态模式(State): 当一个对象的内在状态改变时允许改变其行为,这个对象像是改变了其类。类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。场景: 状态模式主要解决当一个对象状态转换的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。即行为随状态改变而改变的场景类图:代码实例:public class Context { private State state; int progress; boolean原创 2020-11-14 01:23:45 · 113 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式: 定义了一种一对多的依赖关系,让多个观察对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。应用举例: 如一个放哨的人,发现敌情后通知各个部门,然后各个部门做出自己的措施类图:代码://观察者类public abstract class Observer { public abstract void update();}public class XiaoLiObserver extends Observer{原创 2020-11-12 23:31:58 · 104 阅读 · 0 评论 -
设计模式之外观模式
外观模式(Facade): 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使这个子系统更加容易使用主要解决: 降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。实例: mvp的三层模式类图: 外观类Facade提供对子系统调用的方法,可以对子系统的调用顺序做组合等。外界只需通过外观类提供的方法去调用子系统即可。代码:public class Facade { Circle circle; Square square; Trian原创 2020-11-11 23:36:56 · 141 阅读 · 0 评论 -
设计模式之工厂方法模式
工厂方法模式: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类与简单工厂模式的区别: 简单工厂模式是在一个工厂类供根据不同的选择条件来创建不同的实例化。而工厂方法模式则是对每一个待实例化的类都增加一个对应的工厂类。注: 简单工厂如果新增加一个类,需要修改工厂类,不符合开放-封闭原则,即对扩展开放,对修改封闭类图:代码: 相比简单工厂模式增加了几个工厂类public interface IFactory { Shape createShape()原创 2020-11-11 22:55:03 · 120 阅读 · 0 评论 -
设计模式之代理模式
代理模式(Proxy): 为其他对象提供一种代理以控制对这个对象的访问使用场景:远程代理:为一个对象在不同的地址空间提供局部代表,比如访问远程机器上的对象虚拟代理:根据需要创建开销很大的对象,通过他来存放实例化需要很长时间的真是对象。这样这个对象只需要实例化一次安全代理:安全代理,可以控制真是对象访问时的权限应用举例: 1、比如买火车票可以去代售点买,而不用去火车站,代售点就可以看作是一个代理 2、比如windows里的快捷方式也可以理解为一种代理模式,可以去软件安装目录里点击打开,也可以直接原创 2020-11-11 20:46:06 · 129 阅读 · 0 评论 -
设计模式之装饰模式
装饰模式(Decorator) :动态的给一个对象增加一些额外的功能,就新增加功能来说,装饰模式比生成子类更为灵活。举个例子: 举个不恰当的列子,比如小明穿衣服,小明是个最基本的对象,T恤和裤子就是两个装饰类图:Component: 定义一个对象接口,可以给这些对象动态的添加功能ConcreteComponent : 定义一个具体的对象,给这个具体的对象增加功能。假如这个具体的对象就是小明Decoratore :装饰器抽象类,继承Component,并持有一个Component对象Concr原创 2020-11-04 23:27:56 · 117 阅读 · 0 评论 -
设计模式之策略模式
策略模式(Strategy): 它定义了算法家族,分别封装起来,让他们指尖可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。使用场景: 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。 2、一个系统需要动态地在几种算法中选择一种。 3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。应用实例: 1、商场的促销方案,每种促销手段就是一种策略 2、旅行的出游方式,选择骑自原创 2020-11-01 17:14:45 · 137 阅读 · 0 评论 -
设计模式之简单工厂模式
一、工厂方法模式1.定义:定义一个创建对象的接口,在不同条件下创建不同的实例2.实例创建一个接口public interface Shape { void draw();}创建实现接口的实体类public class Square implements Shape { @Override public void draw() { System.out.println("draw a Square"); }}public class原创 2020-08-09 21:04:12 · 125 阅读 · 0 评论 -
设计模式之单例模式(Singleton)
单例模式的定义:保证一个类只有一个实例,并且提供一个全局访问点使用场景:重量级对象,不需要多个实例,如线程池,数据库连接池类图:一个私有的变量singleton,一个私有的构造方法,一个公共的全局访问点一、懒汉模式:延迟加载,只在真正实用的时候才开始实例化public class LazySingleton { private static volatile LazySingleton sInstance; //定义一个私有的静态变量,volatile是为了线程安全,防止字节码级别的指令原创 2020-08-05 22:44:34 · 196 阅读 · 0 评论