> Java > java지도 시간 > 본문

Java의 빌더 패턴 사례 분석

王林
풀어 주다: 2023-05-10 10:40:15
앞으로
1425명이 탐색했습니다.

빌더 패턴이란 무엇입니까

빌더 패턴의 정의: 동일한 구성 프로세스가 다른 표현을 만들 수 있도록 복잡한 객체의 구성을 표현에서 분리하는 것을 의미합니다. 이 디자인 패턴을 빌더 모델이라고 합니다. 복잡한 개체를 여러 개의 간단한 개체로 분해한 다음 단계별로 구축합니다. 이는 변경과 불변성을 분리합니다. 즉, 제품의 구성 요소는 변경되지 않은 상태로 유지되지만 각 부분은 유연하게 선택할 수 있습니다.

장점

1. 캡슐화성이 좋고 구성과 표현이 분리됩니다.

2. 확장성이 좋고 각 특정 빌더가 서로 독립적이므로 시스템의 분리에 도움이 됩니다.

3. 클라이언트는 제품의 내부 구성에 대한 세부 사항을 알 필요가 없습니다. 빌더는 다른 모듈에 영향을 주지 않고 점차적으로 생성 프로세스를 개선할 수 있으므로 세부적인 위험을 더 쉽게 제어할 수 있습니다.

단점

1. 제품의 구성품이 동일해야 하므로 사용 범위가 제한됩니다.

2. 제품의 내부 변경이 복잡할 경우 시공사에서도 동시에 수정을 해야 하므로 향후 유지관리 비용이 더 많이 발생하게 됩니다.

지식

빌더 패턴과 팩토리 패턴은 초점이 다릅니다. 빌더 패턴은 구성요소의 조립 프로세스에 중점을 두는 반면, 팩토리 메소드 패턴은 구성요소 생성 프로세스에 더 중점을 두지만 둘을 조합하여 사용할 수 있습니다. .

빌더 패턴 구현

사례: 기적의 박사 두두 연금술

제품: elixir

Abstract 빌더: 추상 연금술

콘크리트 빌더: 콘크리트 연금술

감독: 기적의 박사 두두

기적의 박사 두도가 나인 변신 엘리를 개선합니다. xir 그리고 대공허 변환 비약

참고: 문제를 피하기 위해 여기에 언급된 비약의 내용에는 비약의 이름과 효과만 포함되어 있으며 재료는 포함되어 있지 않습니다.

Elixir

elixir 클래스는 elixir의 이름과 효과의 두 가지 속성을 선언합니다.

public class Dan {
    /* cailiao 丹药的名称
           danhuo 丹药的效果*/
    private String name;
    private String xiaoguo;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getXiaoguo() {
        return xiaoguo;
    }

    public void setXiaoguo(String xiaoguo) {
        this.xiaoguo = xiaoguo;
    }
}
로그인 후 복사

Abstract elixir Formula

새로운 elixir 객체인 Abstract 클래스는 elixir의 이름을 지정하고 elixir 효과를 할당하는 두 가지 추상 메서드를 선언합니다. 엘릭서를 생성하는 방법이기도 합니다.

//抽象丹方
abstract class DanFang {
    Dan dan = new Dan();

    public abstract void name();

    public abstract void xiaoguo();

    public Dan getDan() {
        return dan;
    }

}
로그인 후 복사

9턴 비약 레시피

특정 레시피 클래스는 레시피 클래스를 상속하고 두 가지 추상 메서드를 구현합니다.

//九转仙丹丹方
public class JiuZhuan extends DanFang {

    @Override
    public void name() {
        dan.setName("九转仙丹");
    }

    @Override
    public void xiaoguo() {
        dan.setXiaoguo("原地成仙");
    }
}
로그인 후 복사

Taixuhuasendandanfang

특정 Danfang 클래스는 Danfang 클래스를 상속하고 두 가지 추상 메서드를 구현합니다.

//太虚化神丹丹方
public class Taixu extends DanFang {
    @Override
    public void name() {
        dan.setName("太虚化神丹");
    }

    @Override
    public void xiaoguo() {
        dan.setXiaoguo("意念化神");
    }
}
로그인 후 복사

기적의 의사 두두

는 비약 속성, 매개변수를 사용한 구성 방법, 연금술 방법을 선언합니다.

public class DouDou {
    private final DanFang danLu;

    public DouDou(DanFang danLu) {
        this.danLu = danLu;
    }

    //炼丹方法
    public Dan lian() {
        //放入材料
        danLu.name();
        //释放丹火
        danLu.xiaoguo();
        //成丹
        return danLu.getDan();
    }
}
로그인 후 복사

Test

알약 두 개를 정제하는 중입니다.

public class Demo {
    public static void main(String[] args) {
        //炼制九转仙丹
        //new一个九转仙丹的丹方
        DanFang jiu = new JiuZhuan();
        //把丹方给豆豆
        DouDou dou = new DouDou(jiu);
        //炼丹生成丹药
        Dan dan = dou.lian();
        System.out.printf("丹药名称:%s   丹药效果:%s", dan.getName(), dan.getXiaoguo());


        System.out.println();

        //炼制太虚化神丹
        //new一个九转仙丹的丹方
        DanFang tai = new Taixu();
        //把丹方给豆豆
        DouDou dous = new DouDou(tai);
        //炼丹生成丹药
        Dan dans = dous.lian();
        System.out.printf("丹药名称:%s   丹药效果:%s", dans.getName(), dans.getXiaoguo());
    }
}
로그인 후 복사

Java의 빌더 패턴 사례 분석

위 내용은 Java의 빌더 패턴 사례 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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