浅谈简单工厂设计模式

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

/**
*一个表示可以移动的对象接口
*移动的对象都必须有一个移动的方法move(String type)
*其中的参数可以告诉怎么移动
*/
public interface MoveEntry{
         public void move(String type);
}

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

public class Car implements MoveEntry{
         public void move(String type){
	      System.out.println("现在汽车在跑" + type);
          }
}

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

public class Client{
         public static void main(String[] args){
	      MoveEntry entry = new Car();
	      entry.move("加速!");
          }
}

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

public class Factory{
         public static MoveEntry createMoveEntry(){
	      return new Car();
         }
}

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

public class Client{
         public static void main(String[] ahrs){
	        MoveEntry entry = Factory.createMoveEntry();
                entry.move("加速吧!");
          }
}

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

 

         看着这一篇博客,再看一下上一次的时间,感觉空间充满了灰尘,其中好几次博客已经写下来,但是存活时间不会超过10秒钟,删掉。。。。。自己也不知道为什么,现在总想要一种答案,不是对于技术的,只是对于这个阶段的,一直在看人物传记希望给自己一份想要的答案,但是却在寻找中让手边的事拉了下来,或许每个人都有这样一段时间吧。继续寻找答案,但是做好技术!

你可能感兴趣的:(设计模式,答案)