【0004】【Java设计模式】【工厂设计+单例模式】
1.单例+静态工厂方法

【测试代码】

2.简单工厂模式
【可以生成任意定制交通工具的类型和生产过程】除了car之外可以生成多种交通工具;
2.1 【可以生成任意定制交通工具】
【说明】首先书写一个接口(抽象出交通工具共有的方法),不同的子类(交通)实现此接口;
【接口】

【子类】实现公有方法;

2.2 工厂方法的简单写法
【说明】此处是简单的只生产plane,如果是car的话,需要在Test.java中再重写写CarFactory,不方便;


【改为生产car】缺点很明显,在test.java中需要多写相关的代码;



2.3 工厂方法的改进
【说明】使用到了多态-抽象的父类,子类继承父类;
【父类】抽象父类:定义了一个抽象的方法,具体生产什么内容,由子类决定;

【子类】


【测试】生产不通过类型的交通工具,只要控制对应的交通工具的工厂就可以;不必关心具体的类;

【新添加一个交通工具】



【总结】

3.抽象工厂模式
3.1问题的引出
【说明】一系列的产品进行替换;例如:此时的人具有武器、食物、车等等;

【思路】书写一个工厂类,可以产生一系列的工具;
【默认工厂】


【一个新的工厂类】

【问题】替换工厂之后:一系列的创建对象都需要进行改变;

3.2 抽象工厂的实现
【抽象工厂类】

【抽象父类】



【子类实现】






【工厂子类实现】


【说明】这样做的好处:整体的替换掉一些系列的产品时,只需要将一系列的产品造出来,然后将工厂造出来,然后替换掉工厂即可;
如:将1系列的产品替换为2系列的产品,只要换掉工厂(修改一个地方即可)即可;

【调用演示】


【应用场景】如果需要替换一系列的产品,只要生产自己的一系列的产品(继承父类),然后产生自己的工厂(继承工厂类);
只修改一处,别的地方不需要改变;实例:换皮肤;
【抽象工厂】生产了一系列的产品,如果想换掉/扩展一系列产品的时候,以及对一系列的产品的生产过程进行控制,

4.抽象工厂和普通工厂的优缺点
【普通工厂】在产生产品系列的时候,出现工厂泛滥;
【抽象工厂】在产生新的产品的品种的时候,需要改变最上层的工厂抽象类;

【说明】优缺点:两者不可兼得;
5.理解Sping的Bean工厂
【思路】根据配置文件,传递类的对象,然后调用类的方法;直接修改配置文件即可;


【测试】


6.模拟Spring的BeanFactory
6.1 Spring 中的BeanFactory的使用


【增加spring的jar包】


【配置文件的内容】



【解析配置文件】



【增加日志包】



6.2 动手写一个BeanFactory
【解析xml文件】


【引入jdom库】

【参考代码】



【获取class和id属性】


【模拟bean容器】



浙公网安备 33010602011771号