zoukankan      html  css  js  c++  java
  • java基础-工程设计模式

    什么是工厂模式:在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部大机器中的一个齿轮传动。

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

    在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

     

     在项目中很多时候合作开发,每个人代码分工,那么分工合并的过程很容易出问题。比如

     A改类名造成B也得改代码,这时候就出现工厂模式

    先建一个接口和具体的类

    package com.BWM;
    
    public interface BWM{
        void info();
            }
    //
    //class  BWM3 implements BWM{
    //    @Override
    //    public void info() {
    //        System.out.println("BWM3");
    //    }
    //}
    //改动
    class  BWM3i implements BWM{
        @Override
        public void info() {
            System.out.println("BWM3i");
        }
    }
    class  BWM5 implements BWM{
        @Override
        public void info() {
            System.out.println("BWM5");
        }
    }
    
    class  BWM7 implements BWM{
        @Override
        public void info() {
            System.out.println("BWM7");
        }
    }

    然后构建工厂,汽车生产工厂接口,重点

    package com.BWM;

    public interface BwmFactory {
    BWM productBWM();
    }

    class BWM3Factory implements BwmFactory{
    @Override
    public BWM productBWM() {
    // System.out.println("生产3系宝马");
    System.out.println("生产3i系宝马");
    return new BWM3i();
    }
    }

    class BWM5Factory implements BwmFactory{
    @Override
    public BWM productBWM() {
    System.out.println("生产5系宝马");
    return new BWM5();
    }
    }

    class BWM7Factory implements BwmFactory{
    @Override
    public BWM productBWM() {
    System.out.println("生产7系宝马");
    return new BWM7();
    }
    }


    然后测试

    package com.BWM;
    
    public class test {
        public static void main(String[] args) {
            BWM b3 = new BWM3Factory().productBWM();
            b3.info();
            BWM b5 = new BWM5Factory().productBWM();
            b5.info();
            BWM b7 = new BWM7Factory().productBWM();
            b7.info();
        }
    }

    然后发现改动之后也不用变B开发人员的代码

  • 相关阅读:
    Python3网络学习案例三:编写web server
    struct.pack()和struct.unpack() 详解(转载)
    Python3网络学习案例二:traceroute详解
    Redis 配置
    vue之this.$route.params和this.$route.query的区别
    解决bugs: mybatisPlus 分页不能生效
    解决bug :"status":400,"error":"Bad Request","message":"Required request body is missing:
    vue,ElementUI中Switch 开关,switch 打开时的值为数字,该如何设置
    解决bug:vue项目中点击修改按钮,不能显示要修改的分类名字
    The 'Access-Control-Allow-Origin' header contains multiple values'*, *', but only one is allowed.
  • 原文地址:https://www.cnblogs.com/yangj-Blog/p/12964669.html
Copyright © 2011-2022 走看看