zoukankan      html  css  js  c++  java
  • Java的工厂模式(三)

      除了一般的工厂模式之外,还有抽象工厂模式,抽象工厂模式更强调产品族的概念,一个具体工厂生产出来的系列商品都是一个产品族的。

      假设我们有两个具体工厂,分别是袋装水果工厂和罐装水果工厂,它们都能生产苹果和香蕉,这样生产出来的水果就会有四种,其中罐装工厂生产出的罐装水果和香蕉都属于一个产品族。要完成我们所说的代码要一步一步建立我们的工厂和产品。

      首先我们要建立两个接口,再建立四个产品类分别各自继承其接口。

    /**
     * @author mugglean
     * 
     *
     */
    
    //苹果接口
    public interface Apple {
        public void produce();
    }
    
    
    //香蕉接口
    public interface Banana {
        public void produce();
    }
    
    
    //袋装苹果类
    public class BagApple implements Apple {
    
        @Override
        public void produce() {
            // TODO Auto-generated method stub
            System.out.println("-------生产了一个袋装苹果-------");
        }
    
    }
    
    //罐装苹果类
    public class CannedApple implements Apple {
    
        @Override
        public void produce() {
            // TODO Auto-generated method stub
            System.out.println("-------生产了一个罐头苹果-------");
        }
    
    }
    
    //袋装香蕉类
    public class BagBanana implements Banana {
    
        @Override
        public void produce() {
            // TODO Auto-generated method stub
            System.out.println("-------生产了一个袋装香蕉-------");
        }
    
    }
    
    //罐装香蕉类
    public class CannedBanana implements Banana {
    
        @Override
        public void produce() {
            // TODO Auto-generated method stub
            System.out.println("-------生产了一个罐头香蕉-------");
    
        }
    
    }

      然后我们再建一个抽象工厂和两个实体工厂,就是我们的罐头工厂和袋装工厂。

    //工厂接口
    public interface FruitFactory {
        //生产香蕉
        public Banana getBanana();
        //生产苹果
        public Apple getApple();
    }
    
    //罐头工厂
    public class CannedFactory implements FruitFactory {
    
        @Override
        public Banana getBanana() {
            // TODO Auto-generated method stub
            return new CannedBanana();
        }
    
        @Override
        public Apple getApple() {
            // TODO Auto-generated method stub
            return new CannedApple();
        }
    
    }
    
    
    //袋装工厂
    public class BagFactory implements FruitFactory {
    
        @Override
        public Banana getBanana() {
            // TODO Auto-generated method stub
            return new BagBanana();
        }
    
        @Override
        public Apple getApple() {
            // TODO Auto-generated method stub
            return new BagApple();
        }
    
    }

      这样我们的所有类都建立好了,再建一个测试进程。

    public class TestDrive {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            FruitFactory factoryone=new BagFactory();
            Banana myBanana=factoryone.getBanana();
            myBanana.produce();
            
            
            FruitFactory factorytwo=new CannedFactory();
            Apple myApple=factorytwo.getApple();
            myApple.produce();
        }
    
    }

      运行结果如下:

    -------生产了一个袋装香蕉-------
    -------生产了一个罐头苹果-------

      成功实现了工厂模式,这样两个工厂模式就讲解完毕了,工厂模式在JDBC和Spring中都有很好的运用,是一个很基础的设计模式。

  • 相关阅读:
    android学习笔记07(activity跳转,通信,及发短信)
    android学习笔记05(RadioGroup,CheckBox,Toast)
    义无返顾
    android学习笔记01(LinearLayout)
    linux远程桌面学习
    android学习笔记08(activity通信的一个实例乘法计算器)
    android学习笔记12(ProgressBar进度条初级学习)
    android学习笔记06(第一个程序)
    android学习笔记03(RelativeLayout)
    poj2886 Who Gets the Most Candies?
  • 原文地址:https://www.cnblogs.com/mugglean/p/8878977.html
Copyright © 2011-2022 走看看