代理模式
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。
个人理解:静态代理,可以代理某个接口下的所以具体实现类的对象方法,当时还是不够解耦合,需要站在更高的角度,对所有接口都能代理,而不是某个接口下的所有具体实现类,所以利用java反射中的class类,站在这个高度上,就可以对所有接口都代理。这就是动态代理。
区分中介者模式和代理模式
应用场景:
权限控制 图片懒加载(先通过一张loading图占位,然后通过异步的方式加载图片,等图片加载好了再把完成的图片加载到img标签里面。) 代理模式主要包含三个角色,即抽象主题角色(Subject)、委托类角色(被代理角色,Proxied)以及代理类角色(Proxy),如下图所示:
抽象主题角色:可以是接口,也可以是抽象类; 委托类角色:真实主题角色,业务逻辑的具体执行者; 代理类角色:内部含有对真实对象RealSubject的引用,负责对真实主题角色的调用,并在真实主题角色处理前后做预处理和后处理。
策略模式
定义:策略模式就是将一系列算法封装起来,并使它们相互之间可以替换。被封装起来的算法具有独立性,外部不可改变其特性。(简单的说减少if判断,改成switch的理念)
目的:将算法的使用与算法的实现分离开来
优点: 顾名思义:策略即选择,当存在大量的选择判断时,可以采取策略模式,将不同的方法抽离封装,将一个个方法封装起来,提高代码复用率,减少代码冗余;策略模式可看作为if/else判断的另一种表现形式,在达到相同目的的同时,极大的减少了代码量以及代码维护成本。
在前端工作中的常见应用:
表单校验:封装成对象,使用时直接调用,而不是进行if else判断 根据vip等级不同进行不同的操作:同样封装对象,使用时直接调用。
工厂模式
是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 个人理解: 字面理解,工厂原材料放进去,产品送出来… 将参数带入,就会返回给我们一个想要的对象,每次都是新的. 使用场景: 日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。 数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。 设计一个连接服务器的框架,需要三个协议,“POP3”、“IMAP”、“HTTP”,可以把这三个作为产品类,共同实现一个接口。