![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
设计模式讲解
杨文浩android
2年java,5年Android,日活150万的App.欢迎关注交友,我是武汉的
展开
-
一分钟读懂设计模式--单例模式
一、使用场景 单例模式只允许创建一个对象,因此节省内存,加快对象访问速度。 1.需要频繁实例化然后销毁的对象。 2.创建对象时耗时长,耗资源,又经常用到的对象。 3.频繁访问数据库或文件的对象 4.工具类对象 二、懒汉式 在类加载的时候不被初始化 不加synchronized线程不安全,加synchronized保证线程安全,但是效率低,多数情况下不需要同步。 private static SingletonUtil instance; //线程不安全 public stati原创 2020-09-10 14:33:02 · 150 阅读 · 0 评论 -
一分钟读懂设计模式--建造者模式
使用场景 当一个对象参数很多,显然通过构造函数创建不合适,或者设置参数顺序运行执行结果,参数是多变得,可以使用建造者模式,链式调用,灵活性高。 public class BGDrawable { private final Builder builder; private BGDrawable(Builder builder) { this.builder = builder; } public Drawable drawable() {原创 2020-09-11 10:09:16 · 130 阅读 · 0 评论 -
一分钟读懂设计模式--代理模式
静态代理 动态代理原创 2020-09-11 09:55:20 · 105 阅读 · 0 评论 -
一分钟读懂设计模式--观察者模式
使用场景 一个状态改变,需要同时改变其他对象的状态,而且不确定是多少个,也不知道其他对象是谁 优点:观察者与被观察者抽象解耦 缺点:程序中包括一个被观察者和多个被观察者,开发和调试比较复杂,而且Java中的消息的通知默认是顺序执行的,一个观察者的卡顿会影响整体的执行效率。在这种情况下,一般考虑采用异步的方式。 //被观察者接口 public interface Subject { void registerObserver(Observer observer); void r原创 2020-09-10 18:26:52 · 96 阅读 · 0 评论 -
一分钟读懂设计模式--责任链模式
使用场景 责任链一般用于处理流程节点之类的实际业务场景中。 责任链主要重在责任分离处理,让各个节点各司其职。 缺点:责任链如果很长,调试比较麻烦。 比如请假申请,组长只审批小于2天的假,否则交给主管审批,主管只审批小于5天的假,否则交给经理审批,由经理做决定。 //抽象 审批人, public abstract class Approver { //true 审批通过,false 审批驳回 public abstract boolean approve(int days);原创 2020-09-10 17:42:36 · 131 阅读 · 0 评论 -
一分钟读懂设计模式--适配器模式
使用场景:需要使用已有的功能,但又不满足现在的需求。 一、类适配 单继承,只能适配一个 可以置换被适配者的方法。 //被适配者 public class Adaptee { public void specificRequest() { System.out.println("被适配的"); } } //目标接口 public interface ITarget { void request(); } /** * 类适配器,继承被适配的类,同时实现原创 2020-09-10 16:26:36 · 112 阅读 · 0 评论 -
一分钟读懂设计模式--策略模式
一、使用场景 1、多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。 2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。 3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。 策略模式:优点:统一所有的算法,行为,避免客户端再去些复杂的算法或行为 缺点:客户端必须知道所有的策略,并自行选择策略,也就是说必须知道算法,行为规则,根据自己去选择。 旅游为例子,可以做火车,飞机...原创 2020-09-10 16:14:42 · 120 阅读 · 0 评论 -
一分钟读懂设计模式--工厂模式
一、简单工厂模式 1具体的工厂类有一个create的方法,利用if/switch返回具体产品 2create方法通常时静态,所以也叫静态工厂。 缺点:扩展性差,要增加一个产品,还需要修改工厂类方法 不同产品需要不同额外的参数时,不支持。 //面条,最好都用接口 public interface INoodles { //描述面条的 void desc(); } public class LZNoodles implements INoodles { ...原创 2020-09-10 15:28:40 · 135 阅读 · 0 评论