设计模式之工厂模式

议论:

      除了直接new对象以外有什么好的创建对象方法吗?

      如果有许多类有统一的接口,我们如果想要使用这些类创建一些对象,除了直接new还可以怎么办呢?

     我们可以根据不同的参数创建不同的对象:

如:if(a){创建a1,}if(b){创建a2}......

    但是思考如果这段代码加在接口中,那么如果有新的子类就要更改这部分if......,违反了对扩展开放对修改关闭的原则。

1 简单工厂模式

              将创建对象的代码(变化的部分),抽象出来成为一个类A,其他用户在创建对象或者对象族的时候,需要在自己类内构造一个A.

 

简单工厂模式用一个类实现对象创建方法的封装,然后使用者只需在自己的构造函数中或者类中添加对其引用即可。

 

2、工厂模式:定义了一个创建对象的接口,但由子类决定要实例化的是哪一个类。工厂方法让类把实例化推迟到子类中。(工厂模式主要是封装了对象的创建,工厂方法在接口中声明,返回值为对象类型接口,必须为抽象类型以便要求子类实现)

               abstract  Product  factorymethod(String type);(工厂接口中的工厂方法)

理解:可以理为声明了一个工厂接口,里面包含一个生产对象的抽象方法,那么每一个子类都有自己的实现,也就是自己生产对象的方法,因此每一个子类都可以理解为是一个简单工厂,这样类的实现和创建完全解耦,类实现的改变不会影响类的创建。

posted on 2017-07-20 17:49  笑傲江湖未平生  阅读(115)  评论(0编辑  收藏  举报