> Java > Java베이스 > 팩토리 패턴 Java 란 무엇입니까?

팩토리 패턴 Java 란 무엇입니까?

angryTom
풀어 주다: 2019-11-11 09:34:57
원래의
3447명이 탐색했습니다.

팩토리 패턴 Java 란 무엇입니까?

팩토리 패턴 java란 무엇입니까

팩토리 패턴은 Java에서 가장 일반적으로 사용되는 디자인 패턴 중 하나입니다. 이러한 유형의 디자인 패턴은 객체를 생성하는 최적의 방법을 제공하는 생성 패턴입니다.

팩토리 패턴에서는 객체 생성 시 생성 로직을 클라이언트에 노출하지 않고, 공통 인터페이스를 사용하여 새로 생성된 객체를 가리킵니다.

간단히 말하면, 팩토리 메소드는 새로운 작업을 대체합니다. 일반 용어로 말하면, 새 객체를 생성할 때 프로그래밍할 때 팩토리 메소드를 직접 호출하면 됩니다. 이를 구현하려면 특정 팩토리 클래스를 정의하고 인스턴스를 생성하는 메서드를 정의합니다.

장점:

1. 호출자가 개체를 생성하려는 경우 해당 개체의 이름만 알면 됩니다.

2. 높은 확장성. 제품을 추가하려면 팩토리 클래스만 확장하면 됩니다.

3. 제품의 특정 구현을 보호합니다. 호출자는 제품 인터페이스에만 관심이 있습니다.

단점:

제품을 추가할 때마다 특정 클래스와 객체 구현 팩토리를 추가해야 하며, 이로 인해 시스템의 클래스 수가 두 배로 늘어나고 시스템의 복잡성도 어느 정도 증가합니다. 시스템 특정 클래스에 대한 종속성이 추가되었습니다. 이것은 좋은 일이 아닙니다.

적용 사례:

1. 자동차가 어떻게 만들어지는지, 자동차 내부의 구체적인 구현에 대해 걱정하지 않고 공장에서 직접 픽업할 수 있는 자동차가 필요합니다.

팩토리 패턴의 간단한 구현은 다음과 같습니다.

//所有车的接口  有一个共同改的方法 开车
public interface Car {
    public void drive();
}
//奥迪类  实现car接口因为奥迪车也是车 肯定可以开的嘛
public class Audi implements Car {
    public Audi(){
        System.out.println("生产出一辆奥迪");
    }
    @Override
    public void drive() {
        System.out.println("开奥迪");
    }
}
//宝马类  实现car接口因为宝马车也是车 肯定也可以开
public class Bmw implements Car{
    public Bmw(){
        System.out.println("生产出一辆宝马");
    }
    @Override
    public void drive() {
        System.out.println("开宝马");
    }
}
//生产车的工厂  该工厂接收一个车名 你只需要告诉他你要生产什么车  就可以生产出对应的车出来
public class CarFactory {
    public static Car getCar(String caename){
        if(caename.equals("audi")){
            return new Audi();
        }else if(caename.equals("bmw")){
            return new Bmw();
        }
            return null;
    }
}
//测试
public class Test {
    public static void main(String[] args) {
        //告诉工厂类 你需要生产出一辆奥迪车  那么给昂他传一个参数audi进去
        Car audi = CarFactory.getCar("audi");
        //就可以生产出奥迪的车 调用开车的方法就可以开车啦
        audi.drive();
        //宝马类似
        Car bmw = CarFactory.getCar("bmw");
        bmw.drive();
    }
}
输出:
成产出一辆奥迪
开奥迪
生产出一辆宝马
开宝马
로그인 후 복사

추천 튜토리얼: java 튜토리얼

위 내용은 팩토리 패턴 Java 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿