【Java】工厂设计模式

工厂设计模式

这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

之前我们创建类对象时, 都是使用new 对象的形式创建,

除new 对象方式以外, 工厂模式也可以创建对象.

耦合度: 类与类之间的关系,如果关系比较强,高耦合, 如果关系比较弱,低耦合(开发)

区别:

需求: 有10个类,需要在10个测试类中,分别创建这10个类的对象

以前:

直接通过new 来创建 --->每一个测试类都需要和这10个类进行关联--(耦合度高)

工厂模式:

定义一个工厂类,专门用来创建这10个类的对象, 并提供获取对象的方法,那这个时候测试类只需要跟工厂类关联即可----> 低耦合

将获取对象的代码与要创建对象的代码进行分开,获取对象的代码不需要直接创建对象,也就不需要关心创建对象时需要的数据。只需要通过工厂类获取对象即可。

优点:

解决类与类之间的耦合问题

使用:

定义一个类,提供一个静态方法,在静态方法中创建类的对象并返回

  1. 编写一个Car接口, 提供run方法

  2. package com.jcli.demo04_工厂;
    
    public interface Car {
        void run();
    }
    
  3. 编写一个三个类实现Car接口,重写run方法

  4. package com.jcli.demo04_工厂;
    
    public class BaoMa implements Car {
        @Override
        public void run() {
            System.out.println("宝马正在以300迈的速度行驶...");
        }
    }
    
    package com.jcli.demo04_工厂;
    
    public class Benchi implements Car{
        @Override
        public void run() {
            System.out.println("奔驰正在以200迈的速度行驶...");
        }
    }
    
    package com.jcli.demo04_工厂;
    
    public class Falali implements Car{
        @Override
        public void run() {
            System.out.println("法拉利正在以300迈的速度行驶...");
        }
    }
    
  5. 提供一个工厂类,可以用来生产汽车对象

  6. package com.jcli.demo04_工厂;
    
    public class CarFactory {
        public static Car createCar(String type){
            if ("Falali".equalsIgnoreCase(type)){
                // 创建法拉利汽车对象,并返回
                return new Falali();
            } else if("Benchi".equalsIgnoreCase(type)){
                // 创建奔驰汽车对象,并返回
                return new Benchi();
            }else if("BaoMa".equalsIgnoreCase(type)){
                // 创建宝马汽车对象,并返回
                return new BaoMa();
            }else {
                return null;
            }
        }
    }
    

package com.jcli.demo04_工厂;

public class Test05 {
    public static void main(String[] args) {
        // 创建法拉利对象,调用run方法
        //new Falali().run();
        Car falali = CarFactory.createCar("Falali");
        falali.run();
        // 创建奔驰对象,调用run方法
        //new Benchi().run();
        Car car2 = CarFactory.createCar("Benchi");
        car2.run();

        // 创建宝马对象,调用run方法
        //new BaoMa().run();
        Car car3 = CarFactory.createCar("BaoMa");
        car3.run();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值