>Java >java지도 시간 >Java 팩토리 메소드 패턴 학습

Java 팩토리 메소드 패턴 학습

黄舟
黄舟원래의
2017-10-13 10:25:051582검색

이 글은 주로 자바 디자인 패턴 학습의 팩토리 메소드 패턴을 소개하는데, 관심 있는 친구들은 참고할 수 있다.

팩토리 메소드 패턴(Factory Method): 객체를 생성하기 위한 인터페이스를 정의한다. 인스턴스화합니다. 팩토리 메소드를 사용하면 클래스의 인스턴스화를 하위 클래스로 연기할 수 있습니다.

공장 메소드 패턴 구조 다이어그램:

프로젝트 요구 사항, Lei Feng 공장 만들기, 대학생들이 다른 사람들을 도울 수 있고 자원봉사자들도 다른 사람들의 일을 도울 수 있습니다.

1: 다른 사람들이 바닥을 쓸고, 빨래하고, 밥 사는 것을 돕는 기능을 갖춘 레이펑 클래스를 만들어 보세요.


package FactoryMethodModel;

public class LeiFeng {

 public void Sweep(){
  System.out.println("扫地");
 }
 
 public void Wash(){
  System.out.println("洗衣");
 }
 
 public void BuyRice(){
  System.out.println("买米");
 }
}

2: Lei Feng에서 배우는 대학생을 위한 클래스를 만들고, Lei Feng 클래스를 상속하고, 자신만의 기능을 추가하세요.


package FactoryMethodModel;

/**
 * 学雷锋的大学生
 * @author 我不是张英俊
 *
 */
public class UniversityStudent extends LeiFeng {
//里面可以增加专属大学生的功能
}

3: Lei Feng 클래스를 계승하는 커뮤니티 자원 봉사 클래스를 만듭니다.


package FactoryMethodModel;

/**
 * 学雷锋的社区人员
 * @author 我不是张英俊
 *
 */
public class Volunteer extends LeiFeng {

}

4: Lei Feng 공장 인터페이스를 만듭니다.


package FactoryMethodModel;

/**雷锋工厂的总接口。
 * @author 我不是张英俊
 *
 */
interface LeiFengFactory {
 LeiFeng CreatLenFeng();
}

5: 레이펑에게 배우는 대학생을 위한 공장을 만들어 보세요.


package FactoryMethodModel;

/**
 * 学雷锋的大学生工厂
 * @author 我不是张英俊
 *
 */
public class UniversityStudentFactory implements LeiFengFactory {

 @Override
 public LeiFeng CreatLenFeng() {
  return new UniversityStudent();
 }

 
}

6: 레이펑에게 배우는 자원봉사 공장을 만들어보세요.


package FactoryMethodModel;

/**
 * 学雷锋的社区制志愿者
 * @author 我不是张英俊
 *
 */
public class VolunteerFactory implements LeiFengFactory {

 @Override
 public LeiFeng CreatLenFeng() {
 // TODO Auto-generated method stub
 return new Volunteer();
 }

 
}

7: 테스트 클래스


package FactoryMethodModel;

/**
 * 建立一个雷锋工厂,大学生可以以雷锋的名义起帮助别人,社区志愿者也可以。
 * 工厂化模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。
 * 工厂方法使一个类的实例化延迟到其子类。
 * @author 我不是张英俊
 *
 */
public class Test {

 public static void main(String[] args) {
 
 LeiFengFactory factory=new UniversityStudentFactory();
 LeiFeng student =factory.CreatLenFeng();
 
 student.BuyRice();
 student.Sweep();
 student.Wash();
 }

}

8: 콘솔

쌀 사기
바닥 쓸기
Laundry

요약: 단순 팩토리 방식은 개방형 원리를 위반하지만 팩토리 방식은 이를 극복합니다. 이 문제는 초등학생이 Lei Feng에게 배울 때와 같이 새로운 것을 추가해야 할 때 팩토리 메소드를 통해 새로운 초등학생 팩토리를 추가한 다음 테스트 클래스에서 호출할 수 있습니다.

팩토리 메소드 패턴은 객체 생성 프로세스를 캡슐화하는 장점도 유지합니다. 이를 통해 객체를 변경하지 않고 교체할 수 있으므로 클라이언트 프로그램과 제품 객체 간의 결합이 줄어듭니다. 팩토리 메서드 패턴은 간단한 팩토리 패턴을 더욱 추상화하고 승격시킨 것입니다. 팩토리 패턴은 다형성을 사용하므로 단순한 팩토리 패턴의 장점은 살리고 단점은 극복합니다. 하지만 제품을 추가하지 않고 팩토리 클래스를 추가해야 하기 때문에 추가 개발량이 늘어나는 것이 단점이다.

위 내용은 Java 팩토리 메소드 패턴 학습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.