java和python的区别 java工厂设计模式详解

多条告白如次剧本只需引入一次
媒介
即日来和小搭档们瓜分下安排形式中的工场形式啦
一、工场形式
咱们都领会,安排形式有23种,依照功效和运用场景不妨分为三大类:
创造型形式构造型形式动作型形式工场安排形式(Factory Pattern)呢,即是一种很罕见的安排形式,属于创造型形式的,重要效率即是来创造东西的~
道理图
先来看一个小栗子
二、大略工场形式(非23种)
道理图
?
例子的话,发觉也挺多的 比方百般品牌的电脑呀,大哥大呀,家电呀……
比方条记本电脑的例子
抽取大众接口
这边就只供给一个归来品牌的接口
public interface ILaptop {String brand();}1.2.3.接话柄现类
这边就举两个例子~
public class HuaWeiLaptop implements ILaptop{@Overridepublic String brand() {return "HuaWei";}}?public class MacLaptop implements ILaptop {@Overridepublic String brand() {return "Mac";}}1.2.3.4.5.6.7.8.9.10.11.12.13.工场类
最重要的即是这个工场类了,咱们把创造东西的本领将给它~
public class LaptopFactory {?public static ILaptop createLaptop(String brand){switch (brand){case "HuaWei":return new HuaWeiLaptop();case "Mac":return new MacLaptop();default:return null;}}}1.2.3.4.5.6.7.8.9.10.11.12.13.尝试
就如许,咱们就大略的实行了一个工场形式的运用了~ ,此后创造东西就径直调用功厂的本领就不妨了
public class LaptopMain {public static void main(String[] args) {ILaptop hw = LaptopFactory.createLaptop("HuaWei");String brand = hw.brand();System.out.println(brand);}}1.2.3.4.5.6.7.固然,这个是更大略的工场形式例子了,也叫作 大略工场形式
固然这个也有很鲜明的缺点,以是咱们再来看看这个 工场本领形式
三、工场本领形式
道理图
?
想想大略工场的写法,将创造东西的一切操纵都封装在一个工场里,是不对理的,以是咱们要进一步解耦
抽取工场大众接口
public interface ILaptopFactory {ILaptop createLaptop();}1.2.3.工场实行类
public class HuaweiLaptopFactory implements ILaptopFactory{@Overridepublic ILaptop createLaptop() {return new HuaWeiLaptop();}}1.2.3.4.5.6.尝试
大略变换上头尝试案例的前两句代码即可
HuaweiLaptopFactory huaweiLaptopFactory = new HuaweiLaptopFactory(); ILaptop mac =huaweiLaptopFactory.createLaptop();1.2.是否很大略的就实行了这个工场形式了
四、笼统工场形式
道理图
?
那么工场嘛,确定不只一条消费线,它确定有其余的交易,比方大哥大呀,其余电器啥的 。
以是咱们再反复上头条记本产物的例子,再建少许其余类,而后也经过工场类去创造它即可 。
笼统工场
先设置一个笼统工场
public abstract class AbstractFactory {public abstract IPhone createPhone();public abstract ILaptop createLaptop();}1.2.3.4.工场实行类
也就多了一个罢了呀~
public class HuaweiFactory extends AbstractFactory{@Overridepublic IPhone createPhone() {return new HuaWeiPhone();}?@Overridepublic ILaptop createLaptop() {return new HuaWeiLaptop();}}1.2.3.4.5.6.7.8.9.10.11.五、总结
在运用工场形式时,咱们不妨创造从 大略工场(非23种) ——》 工场本领 ——》笼统工场
这是一个连接扩充,解耦的进程,咱们不妨在名目种按照须要举行采用~
比方 产物多的话就选笼统工场,简单的话就径直用功厂大概大略工场就不妨了
至此,咱们领会到工场形式是属于第23中学安排形式中的创造型形式,重要用处即是创造东西,同声简单步调解耦 。
接着,咱们再来想想 Spring 中庸工场形式相关的
说到这边,你想到什么了呢?
不领会的话,就默念 Factory,Factory,Factory,嘿嘿哈~
是否脑际中一下子展示出来了这两货
BeanFactoryFactoryBean从名字就不妨看出这两货和工场相关 (辨别经过 getBean 和 getObject 获得东西)
那么咱们先来引见下她们叭
六、BeanFactory
源码的之一句话
The root interface for accessing a Spring bean container. (IOC的根接口)
不妨创造它利害常中心的组件 。
按照庄重的人命周期
?
不妨创造,经过 BeanFactory 创造一个 Bean 要过程特殊庄重的过程处置,很烦琐 。
本领
?
本领有很多,比方 获得别号呀,典型呀,能否是单例,原形等
经过 getBean 去获得东西
重要效率
按照 BeanDefinition 天生相映的 Bean 东西 。
?
七、FactoryBean
源码
不妨创造就这么三个本领,一个小工场
?
经过 getObject 本领来归来一个东西

推荐阅读