JAVA的23种设计模式一-------工厂方法模式

时间:2022-10-02 11:35:42

  一、  设计模式的分类:

                        创建型设计模式(5)

                                       工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

                         结构型设计模式(7)

                                        适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式

                         行为型设计模式(11)

                                         策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

                          其他:(并发型模式、线程池模式)


    二、设计模式的原则

           开闭原则

                             程序扩展开放,修改关闭,意思就是在增加新功能的时候可以在不修改原来代码的基础上实现,达到热插拔的效果

                   里氏代换原则

                           该原则是对开闭原则的补充,实现开闭原则的关键步骤就是抽象化,该原则就是对实现抽象化的具体步骤的一个规范

                  依赖倒转原则

                           依赖于抽象不依赖与具体,是开闭原则的基础

                  接口隔离原则

                           使用多个隔离接口,降低类之间的耦合度

                  迪米特法则

                          一个实体尽量少的与其他实体之间发生相互作用,使系统功能模块之间独立起来

                合成复用原则

                         尽量使用合成/聚合的方式,不是使用继承


                                                                   工厂方法模式

       该模式有三种:

         普通工厂模式:建立一个工厂类,对实现同一个接口的类进行实例的创建;通过传递参数来返回不同的实现类;以灯泡为例,灯泡发光是一个接口,不同颜色的灯泡发光是不同的实现类,再创建一个灯泡发光的工厂方法,通过给这个工厂方法传递不同的颜色来返回不同的灯泡实体类;这样就可以实现解耦合

            多个工厂方法模式:由于普通工厂模式是靠那个参数传递返回相应的实现类,为了避免这个参数传递错误的问题,就该用为多个工厂方法来返回相应的实现类;

            静态工厂方法模式:该模式就是将多个工厂方法设计成静态的,用static方法修饰,这样不需要创建实例,直接调用即可;


           总结:凡是出现大量的产品需要创建时,并且具有相同接口时,可以通过工厂方法模式进行创建;

           三种模式的比较:

           第一种模式,参数传递错误,对象就会创建错误;

           第二种模式与第三种模式相对来说,第三种不需要实例化工厂类,直接调用,所以建议使用第三种模式。