网站店铺分布图怎么做,微信商户平台入口,wordpress主题虚拟会员下载,信阳网站设计前提
#xff08;简单工厂不属于设计模式#xff0c;而是一种编程思想【抽象一层出来】#xff09;工厂方法模式、抽象工厂模式
以上都是为了解耦#xff0c;如果考虑多个纬度#xff08;如需要同时考虑多种电器#xff0c;多种品牌#xff09;则优先考虑抽象工厂。
…前提
简单工厂不属于设计模式而是一种编程思想【抽象一层出来】工厂方法模式、抽象工厂模式
以上都是为了解耦如果考虑多个纬度如需要同时考虑多种电器多种品牌则优先考虑抽象工厂。
工厂方法模式是给每一个产品增加一个对应的工厂然后该工厂依赖于抽象工厂相当于每加一个产品就多了两个依赖关系。
策略模式与工厂方法的区别工厂方法是基于多态通过不同的对象参数去找对应的工厂进而拿到不同的对象策略方法也是基于多态但是是通对行为方法的拓展。
策略模式的优点易于拓展、避免重复的ifelse嵌套充分发挥了面向对象的优点、易于拓展 缺点会生成很多的策略类、客户端必须知道所有的策略类并自行决定使用哪一个策略类
思路
提供了多种登录策略【配置在yaml文件中】并且交给Spring容器去管理【这里通过aware接口去拿到applicationContext容器在bean容器初始化的时候读取并加入到map中】
提供了一个工厂UserLoginFactory同时提供一个方法根据参数提供策略对象多态这里返回值是接口然后多种策略模式去实现该接口。
步骤
我们将多种不同的策略对象以及工厂都放在一个包下AccountGranter、SmsGranter分别代表账号登录方式以及短信登录方式。 将多种登录方式抽象出来工厂模式解耦 工厂代码实现
我们在bean完成自动注入后通过applicationContext容器将对象全部放到map中 application.yaml中自定义配置配置多种登录方式我们可以创建一个配置类去读取【ConfigurationProperties注解】 这里types名称需要一一对应 本人比较懒所有的实体类都用的Data注解这一行是精髓通过前端发出的参数得到策略对象进而调用登录的逻辑。
最后测试