zoukankan      html  css  js  c++  java
  • 工厂设计模式

    定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

    举例说明:

    car接口:

    package factory;
    
    public interface Car {
    
        String getCarName();
    
    }

    car实例1:

    package factory;
    
    public class AudiCar implements Car {
    
        @Override
        public String getCarName() {
            return "audi";
        }
    
    }

    car实例2:

    package factory;
    
    public class BmwCar implements Car {
    
        @Override
        public String getCarName() {
            return "bmw";
        }
    
    }

    CarFactory抽象类:

    package factory;
    
    public abstract class CarFactory {
    
        Car car;
    
        public void saleCar() {
            car = createCar();
            System.out.println("create car");
            sale(car);
        }
    
        abstract Car createCar();
    
        void sale(Car car) {
            System.out.println("sale " + car.getCarName());
    
        }
    
    }

    具体工厂1:

    package factory;
    
    public class AudiFactory extends CarFactory {
    
        @Override
        Car createCar() {
            return new AudiCar();
        }
    
    }

    具体工厂2:

    package factory;
    
    public class BmwFacory extends CarFactory {
    
        @Override
        Car createCar() {
            return new BmwCar();
        }
    
    }

    测试类:

    package factory;
    
    public class Test {
    
        public static void main(String[] args) {
            CarFactory carFactory = new BmwFacory();
            carFactory.saleCar();
            System.out.println("**********");
            carFactory = new AudiFactory();
            carFactory.saleCar();
        }
    
    }

    执行结果:

    create car
    sale bmw
    **********
    create car
    sale audi
  • 相关阅读:
    14、python基础
    13、Python入门
    12、运算符、流程控制
    10、Linux(六)
    Windows 分层窗口 桌面上透明 Direct3D
    Windows 进程间通信 共享内存
    Linux 库的使用
    FFmpeg 命令行
    FFmpeg 摄像头采集
    FFmpeg input与output 函数流程
  • 原文地址:https://www.cnblogs.com/silenceshining/p/12757632.html
Copyright © 2011-2022 走看看