0
点赞
收藏
分享

微信扫一扫

【Java】工厂设计模式

微言记 2022-03-30 阅读 45
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 条评论