首页 > 其他分享 >工厂模式

工厂模式

时间:2022-10-11 14:13:32浏览次数:43  
标签:product void System 模式 public new 工厂 class

三、工厂模式

1.作用

完成创建者和调用者的分离。

2.分类

简单工厂模式:

就是一个工厂去创建所有东西。

 

 

class Car1{
    public void product(){
        System.out.println("Car1 已生产");
    }
}

class Car2{
    public void product(){
        System.out.println("Car2 已生产");
    }
}

//简单工厂
class SimpleFactory{
        public void product(String name){
            switch (name){
                case "car1":
                    new Car1().product();
                    break;
                case "car2":
                    new Car2().product();
                    break;
                default:
                    System.out.println("没有这个车");
                    break;
            }
        }
}

 

但是这样如果再加一种车,车工厂类要去修改代码,不符合开闭。工厂方法模式解决,但是代码变多了

工厂方法模式:

比简单工厂模式多了个工厂接口和工厂类,就是多加一种产品就需要多加一个工厂。

 

 

public class THS {
    public static void main(String[] args) {
        new FactoryMethod1().product();
        new FactoryMethod2().product();
    }
}


class Car1{
    public void product(){
        System.out.println("Car1 已生产");
    }
}

class Car2{
    public void product(){
        System.out.println("Car2 已生产");
    }
}

class FactoryMethod1{
    public void product(){
        new Car1().product();
    }
}

class FactoryMethod2{
    public void product(){
        new Car2().product();
    }
}

 

抽象工厂模式:

这样如果你需要增加苹果手机和苹果电脑只需要加一个苹果工厂就行了。但是缺点就是如果想加一个手表产品,所有需要的工厂都需要去增加一个创建手表的方法。

 

public class THS {
    public static void main(String[] args) {
        new AbstractFactoryXiaoMi().productA();
        new AbstractFactoryHuaWei().productB();
    }
}

class Phone{
    public void product(){
        System.out.println("手机已生产");
    }
}

class Book{
    public void product(){
        System.out.println("电脑已生产");
    }
}

//抽象工厂模式
class AbstractFactoryXiaoMi{
    public void productA(){
        System.out.print("小米牌"+" ");
        new Phone().product();
    }
    public void productB(){
        System.out.print("小米牌"+" ");
        new Book().product();
    }
}

class AbstractFactoryHuaWei{
    public void productA(){
        System.out.print("华为牌"+" ");
        new Phone().product();
    }
    public void productB(){
        System.out.print("华为牌"+" ");
        new Book().product();
    }
}

 最后:其实这个做的并不规范。比如说产品可以去实现一个产品接口或抽象类去规范或者将产品共有功能整合。抽象工厂中其实这两个工厂可以实现一个工厂接口。

标签:product,void,System,模式,public,new,工厂,class
From: https://www.cnblogs.com/thh19201420/p/16779011.html

相关文章

  • 工厂设备巡检系统解决方案
    现代化工厂生产车间,各种设备的24小时的运行,以及多样化的生产流程,对于设备的正常运转有着很高的要求,设备稳定高效运行和安全的生产车间,是生产型企业最为重要的问题,每年全国......
  • vmware workstation NAT模式配置
    一.配置虚拟网络编辑器1.打开虚拟网络编辑器2.点击右下角更改设置 3.选择NAT模式点击选中NAT模式的虚拟网络,默认为VMnet8(可调整),可设置NAT模式的子网IP和掩码 ......
  • 初识设计模式 - 组合模式
    简介组合模式就是组合多个对象形成树形结构以表示具有“部分-整体”关系的层次结构。组合模式对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。组合模式的关键......
  • 设计模式-状态模式
    封装数据的状态流转逻辑。这个状态模式呢,叫做state模式啊,然后给大家来举一个场景,就比如说,咱们这个销售出货单,它那个状态需要从新建,然后待审批,已审批,已完成,四个状态之间流转......
  • 设计模式-备忘录模式
    将中间数据暂存之后再恢复。好,这个备忘录模式啊,它英文名叫memento,这个memento模式,它是什么意思,我先给大家来举个场景吧,我们现在这个场景是说,首先呢,我有一个类,然后这个类需......
  • 分散式、集中式以及分布式三种模式
    例如:我所工作的地方是一个软件园中的一座大楼,而这座大楼的整个温度调节问题由某一物业公司搞定。现在,摆在他们面前存在多种选择方案。第一种:分散式,即大楼中的各个公司自己......
  • 安装Standalone模式HBase
    所谓Standalone模式HBase,就是只启动一个JVM进程,在这个进程中同时启动了多个后台角色,如:HMaster,单个HRegionServer,以及ZooKeeper服务。下载安装最新版本从这里下载。历史......
  • apache MPM的三种工作模式
    apache和httpd的关系:apache刚开始靠apache这个软件起家,后来发展成为一个基金会,拥有了几十种开源项目,所以就把提供web服务的apache这个软件更名为httpd(apache2以上版本改称......
  • 关于建造者模式builder的深入思考
    看到的这个build之后还利用switch来case的方法真的眼前一亮。最近我想实现一个builder库,用来将要构建的instance按顺序创建好。不过难点在于怎样设计它们的顺序呢?原本的......
  • stm32cubemx配置f103zet6定时器中断,pwm波输出模式,输出捕获模式 慢慢更新
    定时器详细介绍(基于标准库的,原理部分可参考): STM32-定时器详解_KevinFlyn的博客-CSDN博客_stm32定时器1.定时器中断配置配置参考 STM32CubeMX配置定时器中断_小哥。的......