码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式——工厂模式

时间:2020-12-15 12:21:07      阅读:2      评论:0      收藏:0      [点我收藏+]

标签:orange   参数   interface   lang   rgs   str   apple   void   测试结果   

工厂模式

创建对象的最佳方式,相当于把创建对象的过程进行了封装,这样可以将实例化对象的逻辑不对外共享,对外提供一个工厂类方便调用

工厂模式分为三种

  1. 普通工厂模式

    //step1:创建接口
    interface Fruit {
        public void product();
    }  
    
    //step2:创建类实现接口
    class Apple implements Fruit {
        @Override
        public void product() {
            System.out.println("开始生产苹果汁");
        }
    }
    class Orange implements Fruit {
        @Override
        public void product() {
            System.out.println("开始生产橙汁");
        }
    }
    class Banana implements Fruit {
        @Override
        public void product() {
            System.out.println("开始生产香蕉汁");
        }
    }
    
    //step3:创建工厂类,实现给定指定条件创建指定对象
    public class FactoryBean {
        //        1.普通工厂模式
        public Fruit getFruit(String type) {
            if (type.equals("Apple")) {
    //           创建对象的逻辑-----【封装】
                return new Apple();
            } else if (type.equals("Orange")) {
    //           创建对象的逻辑-----【封装】
                return new Orange();
            } else if (type.equals("Banana")) {
    //           创建对象的逻辑-----【封装】
                return new Banana();
            } else
                return null;
        }
    
    //step4:使用工厂类,通过传递类型参数获取指定类的对象。
    public class FactoryTest {
        public static void main(String[] args) {
            FactoryBean f = new FactoryBean();
            Fruit fruit = f.getFruit("Orange");
            Fruit fruit2 = f.getFruit("Apple");
            Fruit fruit3 = f.getFruit("Banana");
            fruit.product();
            fruit2.product();
            fruit3.product();
        }
    }
    

    运行效果:

    技术图片

  2. 多工厂模式
    相当于普通工厂模式的提升,提供了多个方法实现不同对象的实例化过程。

    public class FactoryBean {
    //    2.多工厂模式
        public Apple getApple() {
            return new Apple();
        }
    
        public Orange getOrange() {
            return new Orange();
        }
    
        public Banana getBanana() {
            return new Banana();
        } 
    
    public class FactoryTest {
        public static void main(String[] args) {
    //    2.多工厂模式测试
        FactoryBean f = new FactoryBean();
            Apple apple = f.getApple();
            Banana banana = f.getBanana();
            Orange orange = f.getOrange();
            apple.product();
            banana.product();
            orange.product();
        }
    }
    

    测试结果:

    技术图片

  3. 静态工厂模式

    相当于多工厂模式的提升, 提供的多个方法通过static修饰 这样不用创建实例可以通过类名直接调用

    public class FactoryBean {
    //    静态工厂模式(就是给方法加上static,这样就可以通过类名直接调用了)
        public static Apple getApple() {
            return new Apple();
        }
    
        public static Orange getOrange() {
            return new Orange();
        }
    
        public static Banana getBanana() {
            return new Banana();
        }
    }
    
public class FactoryTest {
    public static void main(String[] args) {
        Apple apple = FactoryBean.getApple();
		Banana banana = FactoryBean.getBanana();
		Orange orange = FactoryBean.getOrange();
		apple.product();
		banana.product();
		orange.product();
    }
}

设计模式——工厂模式

标签:orange   参数   interface   lang   rgs   str   apple   void   测试结果   

原文地址:https://www.cnblogs.com/pgrightwu/p/14110753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!