摘要:一、定义 策略模式,针对每一个不同的类型,调用具有共同接口的不同实现类,从而使得它们可以相互替换。 策略模式 ,针对实现同一接口的不同的类,采用不同的策略。比如,面对高级会员、初级会员会采用不同的折扣。 策略模式,可以避免大量的if和else。 二、角色 策略模式涉及到三个角色: ● 环境(Cont
阅读全文
摘要:一、定义 策略模式,针对每一个不同的类型,调用具有共同接口的不同实现类,从而使得它们可以相互替换。 策略模式 ,针对实现同一接口的不同的类,采用不同的策略。比如,面对高级会员、初级会员会采用不同的折扣。 策略模式,可以避免大量的if和else。 二、角色 策略模式涉及到三个角色: ● 环境(Cont
阅读全文
摘要:使用场景 开发中,有时需要 根据不同的类型执行不同的实现类。 比如,第一次审核,第二次审核, 都是审核,但具体实现不一样。 可以使用工厂模式。 基础接口: public interface MyService { void doSomething(); } 实现类一: @Service public
阅读全文
摘要:工厂模式 开发中,有时会需要根据不同的类型,创建同一接口的对应的不同实现类,再去执行方法。 工厂模式的理解,详情见: https://www.cnblogs.com/expiator/p/8245143.html 示例 以下会举一个例子,不同的反馈类型 type,创建不同的审批处理器对象,进行审批。
阅读全文
摘要:在项目开发中,我们经常需要构建对象。常见的做法有getter/setter,或者构造器构建对象。 可能会有人写出类似如下的代码: Company company=new Company(); company.setAgentId(agentId); company.setAgentUserId(ag
阅读全文
摘要:阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。 这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就
阅读全文
摘要:一、概念 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Sou
阅读全文
摘要:一、概念 组合模式属于对象的结构模式,有时又叫做“部分—整体”模式。组合模式将对象组织到树结构中,可以用来描述整体与部分的关系。组合模式使得用户对单个对象和组合对象的使用具有一致性。类似于,用户操作文件夹和操作子文件夹、文件是一样的操作。 组合模式分为安全式和透明式。 二、角色 这种形式涉及到三个角
阅读全文
摘要:零、定义 代理模式,借助代理实现功能。可以理解成中介,厂商通过中介实现销售,房东通过中介出租房子。 代理模式的定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。 一、角色 代理模式包含如下角色:ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口。RealSub
阅读全文
摘要:1、懒汉式:需要获取对象的时候再实例化。 2、饿汉式:直接实例化对象,调用的时候再返回对象。 3.线程安全的单例模式 直接使用synchronized锁住方法,效率比较差。 主要使用volatile修饰变量,使用双重检查锁(Double Check Lock)。保证线程安全并提高效率。 单例模式思考
阅读全文
摘要:一、设计模式的六大原则1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。2、里氏代换原则(Liskov
阅读全文
摘要:零、分类 工厂模式分为静态工厂、抽象工厂模式、工厂方法模式 一、工厂模式优点: 1.可以使代码结构清晰,有效地封装变化。在编程中,产品类的实例化有时候是比较复杂和多变的,通过工厂模式,将产品的实例化封装起来,使得调用者根本无需关心产品的实例化过程,只需依赖工厂即可得到自己想要的产品。2.对调用者屏蔽
阅读全文