Java中工厂模式的介绍及应用(java中工厂模式的介绍及应用方法)

Java中工厂模式的介绍及应用

十载的三江侗网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整三江侗建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“三江侗网站设计”,“三江侗网站推广”以来,每个客户项目都认真落实执行。

工厂模式简介

工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,而是通过使用一个共同的接口来指向新创建的对象。

优点:

1、封装性:用户不需要知道产品内部的逻辑,只需要知道产品的接口即可。

2、扩展性:当需要新增产品时,只需要增加相应的工厂类和产品类,无需修改原有代码。

3、灵活性:可以根据不同的输入参数,动态决定应该创建哪一个产品类的实例。

工厂模式的结构

在Java中,工厂模式通常涉及到以下四个角色:

1、Product(产品):定义产品的接口或抽象类。

2、ConcreteProduct(具体产品):实现Product接口的具体类。

3、Factory(工厂):定义创建产品的接口。

4、ConcreteFactory(具体工厂):实现Factory接口的具体类,根据不同条件生成不同的产品。

应用示例

以下是一个简单的Java工厂模式示例:

产品接口和具体产品

我们定义一个产品接口Shape和一个具体的产品类Rectangle

public interface Shape {
    void draw();
}
public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Inside Rectangle::draw() method.");
    }
}

工厂接口和具体工厂

我们定义一个工厂接口ShapeFactory和一个具体的工厂类RectangleFactory

public interface ShapeFactory {
    Shape getShape(String shapeType);
}
public class RectangleFactory implements ShapeFactory {
    @Override
    public Shape getShape(String shapeType) {
        if(shapeType == null) {
            return null;
        }        
        if(shapeType.equalsIgnoreCase("RECTANGLE")) {
            return new Rectangle();
        }
        return null;
    }
}

使用工厂创建产品

我们可以使用RectangleFactory来创建Rectangle对象。

public class FactoryPatternDemo {
    public static void main(String[] args) {
        ShapeFactory shapeFactory = new RectangleFactory();
        Shape shape1 = shapeFactory.getShape("RECTANGLE");
        shape1.draw();
    }
}

在这个例子中,当我们调用shapeFactory.getShape("RECTANGLE")时,会返回一个新的Rectangle对象,然后我们可以调用其draw方法,如果需要添加新的产品类型,只需要添加新的产品类和对应的工厂类即可,无需修改原有代码。

分享标题:Java中工厂模式的介绍及应用(java中工厂模式的介绍及应用方法)
网页URL:http://www.mswzjz.com/qtweb/news20/194320.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联