设计模式——工厂模式

工厂模式

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

工厂模式分为三种

  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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值