【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容器】

 

posted @ 2018-05-02 08:47  OzTaking  阅读(193)  评论(0)    收藏  举报