Java模式—简单工厂模式

简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例,简单工厂模式是工厂模式家族中最简单实用的模式。

目的:为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

它的组成:

         1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。

         2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。

         3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。

以一个工厂生产电视和手机为例进行解释:

首先定义分别定义两个类代表电视和手机,并且都实现了work接口

 1 interface work{
 2     public void working();
 3 }
 4 class Phone implements work{
 5 
 6     @Override
 7     public void working() {
 8         System.out.println("生产手机");
 9     }
10     
11 }
12 class Tv implements work{
13 
14     @Override
15     public void working() {
16         System.out.println("生产电视");
17     }
18     
19 }

接着如果想使用这两个类,可以用普通创建对象的方法

 1 public class Test10 {
 2 
 3     public static void main(String[] args) {
 4         Phone phone=new Phone();
 5         phone.working();
 6         
 7         Tv tv=new Tv();
 8         tv.working();
 9     }
10 
11 }

      这样使用的不好处就是,如果Phone类和TV类一旦改变,就得改变上述代码,可以说类Test10依赖于Phone类和TV类,称这种依赖为耦合:使用者直接使用了具体类,表示当前类依赖该具体类。这样当这个具体类发生变化,使用者将受到影响。

为了降低这种影响,引入工厂模式:

增加一个工厂类

 1 class Factory{
 2     public static Work getWork(String product){
 3         if("phone".equals(product)){
 4             return new Phone();
 5         }else if("tv".equals(product)){
 6             return new Tv();
 7         }
 8         return null;
 9     }
10 }

这样Test10类的代码就可以为:

 1 public class Test10 {
 2 
 3     public static void main(String[] args) {
 4         //依赖接口
 5         Work work=Factory.getWork("tv");
 6         if(work!=null){
 7             work.working();
 8         }
 9     }
10 
11 }

这样它由依赖一个具体类转化为依赖接口,降低了耦合,体现了面向接口编程的思想。

这样具体类的变化不会影响到它。

这样写代码虽说和上述结果一样,但是可扩展性增强,维护性更强。

————————————————————————欢迎各位博友指出不足之处,多多交流。

原文地址:https://www.cnblogs.com/chenxing818/p/4684573.html