工厂方法模式

工厂方法实质:    延迟到子类实现

代码示例:

/*产品接口及实现*/

public interface Product{

     //属性及方法略

}

public class ConcreteProduct implements Product{

     //属性及方法实现略

}

/*创建器,声明工厂方法*/

public abstract class Creator{

     public voidoperation(){

     Product api = factoryMethod();

         //相关操作略

}

Protectedabstract Product factoryMethod();

}

/*创建器实现*/

public class ConcreteCreator implements Creator{

     //重定义工厂方法,返回一个具体的Product对象

      protectedProduct factoryMethod(){

           return new ConcreteProduct();

}

}

 

模式讲解:

1.    认识工厂方法模式:  

功能:让父类在不知道具体实现的情况下,完成自己的功能调用,而具体的实现延迟到子类的实现.这样在设计的时候不用去考考虑具体的实现,需要某个对象,通过工厂方法返回就可以了,在使用这些对象来实现功能的时候还是通过接口的实现的,这类似于IOC/DI的思想.

2.   实现成抽象类:

工厂方法的实现中,通常父类会使一个抽象类,里面包含创建所需对象的抽象方法,这些抽象方法就是工厂方法.

注意:子类在实现这些抽象方法的时候,并不是真正去实现具体的功能,而是在子类的方法里面做选择,选择具体的产品是实现对象.

父类里面通常会有使用这些产品对象来实现一定功能的方法,而且这些方法所实现的功能通常都是公共的功能,不管子类选择了何种具体的产品实现,这些方法的功能总是能正确执行

3.   实现成具体的类:

也可以把父类实现成一个具体的类,这种情况下通常是在父类中提供湖区所需产品的默认实现方法,这样即使没有具体的子类也能够运行

4.   工厂方法的参数和返回:

工厂方法的实现中可能需要参数以便决定创建哪一个具体的实现……一般工厂方法返回的是被创建对象的接口对象,当然也可以使抽象类或者一个具体的实现类.

 

5.   谁来使用工厂方法创建的对象:

事实上,在工厂方法里面应该是creator中的其他方法在使用工厂方法创建的对象,虽然也可以把工厂方法创建的对象直接提供给外部使用,但工厂方法模式的本意是由creator对象内部的方法使用工厂方法创建的对象,也就是说,工厂方法一般不提供给creator外部使用.

 

 

思考工厂方法模式:

1.   本质: 延迟到子类来选择实现,工厂方法本身并不会去实现产品接口,具体的产品实现是已经写好了的,工厂方法只要去选择实现就好了

2.   对设计原则的体现:工厂方法模式很好的体现了依赖倒置原则”,依赖倒置原则而告诉我们要依赖于抽象,不要依赖于具体类”,即不要让高层组件依赖于底层组件,而且不管是高层组件还是底层组件都应该依赖于抽象.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值