首页 > 编程语言 >JAVA设计模式(二)-简单工厂

JAVA设计模式(二)-简单工厂

时间:2023-12-26 20:35:36浏览次数:37  
标签:JAVA name People void 工厂 设计模式 public

JAVA设计模式(二)-简单工厂

本篇文章主要讲下java 创建型设计模式中的简单工厂模式.

简单工厂模式又叫 静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

1:定义接口

public interface People{
    void name();
}

2: 实现类

public class Man implements People {
    @Override
    public void name() {
        System.out.println("name: man");
    }
}

public class Woman implements People{
    @Override
    public void name() {
        System.out.println("name: Woman");
    }
}

3: 构建工厂

public class PeopleFactory {
    public People getPeople(int gender){
        if (gender==0){
            return new Man();
        }else{
            return new Woman();
        }
    }

    public static void main(String[] args) {
        PeopleFactory peopleFactory = new PeopleFactory();
        People people = peopleFactory.getPeople(0);
        people.name();
        People people1 = peopleFactory.getPeople(1);
        people1.name();
    }
}

优缺点:

  1. 能够从具体的产品类中解耦
  2. 可以运行时动态创建对象,可以不必关心对象的实例化过程
  3. 扩展性差,每次新增产品都需要修改工厂的代码
  4. 只能创建实现相同接口的类

标签:JAVA,name,People,void,工厂,设计模式,public
From: https://www.cnblogs.com/zhjing/p/17929297.html

相关文章

  • 无涯教程-Java9 - 私有接口方法
    在Java8之前,接口可以具有以下类型的变量/方法。Constantvariables(常量)Abstractmethods  (抽象方法)因此,无涯教程不能在接口中实现方法实现,或更确切地说,不能在Java8之前拥有默认实现。请参见示例。publicclassTester{publicstaticvoidmain(String[]args)......
  • 无涯教程-Java9 - Process API增强
    在Java9ProcessAPI中,负责控制和管理操作系统进程的API已得到很大改进。ProcessHandle类提供了检查进程活动性和销毁进程的方法。它具有onExit方法,CompletableFuture类可以在进程退出时异步执行操作。importjava.time.ZoneId;importjava.util.stream.Stream;importjava.......
  • openjdk源码-java是如何执行shell命令的
    一般我们在java中调用shell脚本的方式如下publicintexecuteLinuxCmd(Stringcmd){LOGGER.info("cmd:{}",cmd);Runtimerun=Runtime.getRuntime();try{Processprocess=run.exec(cmd);InputStreamin=proce......
  • 排查java代码慢-arthas工具
    1.下载地址,arthas(gitee.io)2.下载的是一个zip包 3.上传到服务器任意位置,解压 4.查看java进程ps-ef|grep进程名称显示结果的进程号是:1098156.cd到arthas根目录,执行命令java-jararthas-boot.jar109815启动成功如下:注意:如果是用systemctl启动的,注意下......
  • 深入探讨Java反射:解析机制与应用场景
    当谈及Java编程语言的强大功能时,反射(Reflection)是一个不可忽视的特性。反射允许程序在运行时检查和操作其自身的结构,这为开发者提供了一种动态获取信息和执行操作的途径。在本篇博客中,我们将深入探讨Java反射的原理、用法以及一些实际场景中的应用。什么是反射?反射是Java的一种......
  • 无涯教程-Java9 - Collection工厂方法
    使用Java9,新的工厂方法被添加到List,Set和Map接口以创建不可变的实例。用于以较少的冗长和简洁的方式创建集合。Collections旧方法importjava.util.ArrayList;importjava.util.Collections;importjava.util.HashMap;importjava.util.HashSet;importjava.util.List;im......
  • Java JDBC 详解、使用、连接池
    JDBC介绍Java数据库连接,JDBC(JavaDatabaseConnectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。简单说,jdbc是Java语言为了屏蔽具体的具体的数据库操作的细节不同提供的一个框架。在关系型数据库的处......
  • 如何 使 Java、C# md5 加密的值保持一致
    JavaC#md5加密值保持一致,一般是编码不一致造成的值不同JAVA(加密:123456)C#(加密:123456)UTF-8e10adc3949ba59abbe56e057f20f883eUTF8e10adc3949ba59abbe56e057f20f883eUTF-16LEce0bfd15059b68d67688884d7a3d3e8cUnicodece0bfd15059b68d67688884d7a3d3e8cUS-ASCIIe10adc3949ba59a......
  • java状态模式
    1定义一个接口2publicinterfaceState{3publicvoidhandle();4}567/**8*具体的状态角色(下单)9*CreatedbyAdministrator10*/11publicclassPlaceAnOrderimplementsState{12//具体化状态的行为13@Override14public......
  • Java注解
    Java注解用于为Java代码提供元数据可以把注解当作一个标签注解的定义:public@interfaceAAA{}此时就相当于创建了一个名为AAA的注解(标签)注解的应用:@AAApublicclasstest{}此时就是把这个......