简单工厂设计模式

         简单工厂设计模式

         核心:接口
      思想:封装隔离  
     简单工厂设计模式就是总结出上面这两个方面,但是远远不是这两个这么简单。首先,在说明简单工厂设计模式的概念之前,来想想接口吧。
   接口:里面定义的方法都是抽象的方法,定义的变量都是常量
   我们通常实现接口,来实现里面规定的抽象方法,那么实现类的外观就是这个接口所提供,我们之前使用最多的是接口关于多态性的部分。比如在之前的监听器设计模式中,对于通信项目来减弱数据层与表现层耦合性,我们就是利用了接口的这一特性。
   现在这样想一下,我们编写一个类,实现了一个接口,相当与我们实现了一份契约,可以说这个接口限定了我们对外所能调用的方法(当然也可以编写不属于接口里面的方法, 但是接口规定了至少向外提供的方法),那么对于这个类就产生了约束,对于不同的实现类,相同的方法,可以有不同的实现。
   其实现在我们就可以感受到,接口的思想既是“封装隔离”,我们只要接口对外的方法调用不变,我们对于内部可以进行任何改动而无需修改调用,也就是我们的程序具有一种组装性。

 下来看一下例子吧,有一个感性的认识:
 1.假如有一个接口,如下:

Java代码   收藏代码
  1. /** 
  2. *一个表示可以移动的对象接口 
  3. *移动的对象都必须有一个移动的方法move(String type) 
  4. *其中的参数可以告诉怎么移动 
  5. */  
  6. public interface MoveEntry{  
  7.          public void move(String type);  
  8. }  

 
  2.现在造一辆车,实现接口
 

Java代码   收藏代码
  1. public class Car implements MoveEntry{  
  2.          public void move(String type){  
  3.           System.out.println("现在汽车在跑" + type);  
  4.           }  
  5. }  

 
 3.现在一个客户不知道想要什么交通工具,只想看一下这个可以移动的对象移动的怎么样

Java代码   收藏代码
  1. public class Client{  
  2.          public static void main(String[] args){  
  3.           MoveEntry entry = new Car();  
  4.           entry.move("加速!");  
  5.           }  
  6. }  

 
         在我们之前使用接口的过程中,我们一般使用的过程都是这样的,但是我们从上面说的接口的思想"封装隔离"来看,上面的实现过程没有达到我们想要的效果,因为客户已经知道,是一辆车在跑,但是他不想知道是什么,只要看到移动的效果就好,那么我们就不可以这样了。
       现在就是简单工厂设计模式上场的时候了,这样描述一下吧,我们需要一个工厂造出我们需要的对象,我们不关心工厂里面怎么实现,而且我们可以将工厂封装起来,使得只可以客户端进行方法的调用,那么这样就可以将客户端和实现接口之间的类用一个工厂进行隔离,减少了实现类与客户端之间的耦合性。下来就可以看看简单工厂如果处理上面的情况:
       1.接口仍然是上面的那个接口,也是那个实现Car的类不变,只是增加一个工厂类

Java代码   收藏代码
  1. public class Factory{  
  2.          public static MoveEntry createMoveEntry(){  
  3.           return new Car();  
  4.          }  
  5. }  

 
  2.那么现在客户端调用就可以这样进行了
 

Java代码   收藏代码
  1. public class Client{  
  2.          public static void main(String[] ahrs){  
  3.             MoveEntry entry = Factory.createMoveEntry();  
  4.                 entry.move("加速吧!");  
  5.           }  
  6. }  

 
         由上面我们就可以知道,现在客户端完全不用知道是谁实现了接口,只需要调用工厂里面的方法,获取对象即可,这样就实现了"封装隔离",也许我们会问,无非就是将实现移动到工厂类中,但是我们完全可以将工 厂类封装起来,不对外进行显示,只提供调用方法,这样就减弱了实现类与客户端之间的耦合性。
       上面算是一个基本的简单工厂设计模式已经完成,可以有一点感性的认识,但是简单工厂设计模式绝不仅仅是这样,它可以提供我们想实现封装的任何类,而且可以根据我们传入的参数进行有选择性的实现返回,我们可以将每次新的实现写到配置文件中,在工厂中读取配置文件反射生成实现类是一种更好的扩展方法。这些我们都可以在项目中去使用,来使我们的项目更完美!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值