网站建设免费教程,交通信息华建设网站,南京进出口贸易公司排名,旅游哪个网站最好介绍
简单工厂模式根据所提供的参数数据返回几个可能类中的一个类的实例。通常返回的类都有一个公共的父类和公共的方法。 意图
提供一个类#xff0c;负责根据一定的条件创建某一具体类的实例。同时使用工厂模式也是为了隐藏创建对象的过程
角色及其职责
(1)工厂(Creator… 介绍
简单工厂模式根据所提供的参数数据返回几个可能类中的一个类的实例。通常返回的类都有一个公共的父类和公共的方法。 意图
提供一个类负责根据一定的条件创建某一具体类的实例。同时使用工厂模式也是为了隐藏创建对象的过程
角色及其职责
(1)工厂(Creator)角色:是简单工厂模式的核心负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用创建所需的产品对象。
(2) 抽象(Produet)角色:是简单工厂模式所创建的所有对象的父类负责描述所有实例所共有的公共接口。
(3) 具体产品(Concrete Product)角色:是简单工厂模式的创建目标所有创建的对象
都是充当这个角色的某个具体类的实例。一般来讲,它是抽象产品类的子类实现了抽象产
品类中定义的所有接口方法。 在工厂角色中可以通过参数来判断创建哪种具体的产品子类对象这个参数可以通过配置文件获取也可以作为方法参数传入。
例子
下面我来实现一下 一个产品接口两个产品类ChairDesk一个工厂类通过参数来决定创建哪个具体产品
产品接口
public interface MyProduct {//返回产品的具体名称String getProductName();
}具体产品
public class Chair implements MyProduct{Overridepublic String getProductName() {return 椅子;}
}public class Desk implements MyProduct{Overridepublic String getProductName() {return 桌子;}
}工厂类
/*** Classname MyProductFactory* author: 我心* Description: 产品工厂类* Date 2022/11/26 21:51* Created by Lenovo*/
public class MyProductFactory {public MyProduct getProduct(String code){MyProduct productnull;//要返回的产品对象//如果参数是c则创建Chair对象if (code.equals(c)){productnew Chair();}//如果参数是d则创建Desk对象else if( code.equals(d)){productnew Desk();}return product;}
}
运行代码
public class Main {public static void main(String[] args) {//这时候我们就不需要关注具体创建的是什么对象只需要知道它是所需的产品即可,隐藏了创建对象的细节MyProductFactory productFactorynew MyProductFactory();//然后我们直接调用产品的公共接口方法使用即可不管是什么产品都实现了这一个接口我们也不需要关注接口的细节MyProduct c productFactory.getProduct(c);System.out.println(c.getProductName());}
}运行结果