工厂模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的方式,在Java中,工厂模式主要有两种实现方式:简单工厂模式和工厂方法模式,下面将详细介绍这两种工厂模式的使用方法。
十载的岳普湖网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整岳普湖建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“岳普湖网站设计”,“岳普湖网站推广”以来,每个客户项目都认真落实执行。
1、简单工厂模式
简单工厂模式又称为静态工厂模式,它是一种创建型设计模式,提供了一种在不指定具体类的情况下创建对象的方式,在Java中,简单工厂模式主要有两种实现方式:静态方法和实例方法。
(1)静态方法
静态方法是在类级别上定义的方法,可以直接通过类名调用,在简单工厂模式中,我们可以使用静态方法来创建对象,下面是一个简单的例子:
public class SimpleFactory { public static Product createProduct(String type) { if ("A".equals(type)) { return new ConcreteProductA(); } else if ("B".equals(type)) { return new ConcreteProductB(); } else { throw new IllegalArgumentException("Invalid product type"); } } }
在这个例子中,我们定义了一个SimpleFactory
类,它有一个静态方法createProduct
,该方法接受一个字符串参数type
,根据type
的值创建并返回相应的产品对象,如果传入的type
值无效,则抛出异常。
(2)实例方法
实例方法是在类的实例上定义的方法,需要先创建类的实例才能调用,在简单工厂模式中,我们也可以使用实例方法来创建对象,下面是一个简单的例子:
public class SimpleFactory { public Product createProduct(String type) { if ("A".equals(type)) { return new ConcreteProductA(); } else if ("B".equals(type)) { return new ConcreteProductB(); } else { throw new IllegalArgumentException("Invalid product type"); } } }
在这个例子中,我们定义了一个SimpleFactory
类,它有一个实例方法createProduct
,该方法接受一个字符串参数type
,根据type
的值创建并返回相应的产品对象,如果传入的type
值无效,则抛出异常。
2、工厂方法模式
工厂方法模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的方式,在Java中,工厂方法模式主要有两种实现方式:接口和抽象类。
(1)接口
接口是一种特殊的抽象类型,它只包含抽象方法和常量,在工厂方法模式中,我们可以使用接口来定义产品的创建方法,下面是一个简单的例子:
public interface Product { void doSomething(); }
在这个例子中,我们定义了一个Product
接口,它有一个抽象方法doSomething
,接下来,我们可以为不同的产品实现这个接口:
public class ConcreteProductA implements Product { @Override public void doSomething() { System.out.println("ConcreteProductA is doing something"); } }
public class ConcreteProductB implements Product { @Override public void doSomething() { System.out.println("ConcreteProductB is doing something"); } }
我们可以创建一个工厂类来根据接口创建产品对象:
public class Factory { public static Product createProduct(String type) { if ("A".equals(type)) { return new ConcreteProductA(); } else if ("B".equals(type)) { return new ConcreteProductB(); } else { throw new IllegalArgumentException("Invalid product type"); } } }
在这个例子中,我们定义了一个Factory
类,它有一个静态方法createProduct
,该方法接受一个字符串参数type
,根据type
的值创建并返回相应的产品对象,如果传入的type
值无效,则抛出异常。
(2)抽象类
抽象类是一种特殊的类,它不能被实例化,只能被继承,在工厂方法模式中,我们可以使用抽象类来定义产品的创建方法,下面是一个简单的例子:
public abstract class AbstractProduct { abstract void doSomething(); }
在这个例子中,我们定义了一个抽象类AbstractProduct
,它有一个抽象方法doSomething
,接下来,我们可以为不同的产品继承这个抽象类:
public class ConcreteProductA extends AbstractProduct { @Override public void doSomething() { System.out.println("ConcreteProductA is doing something"); } }
public class ConcreteProductB extends AbstractProduct { @Override public void doSomething() { System.out.println("ConcreteProductB is doing something"); } }
网站标题:java工厂模式三种详解
分享URL:http://www.shufengxianlan.com/qtweb/news28/403028.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联