추상 공장 모델 학습 사례 코드
6283 단어 추상 공장
추상 적 인 공장 모델: 인 터 페 이 스 를 제공 하여 관련 되 거나 의존 대상 의 가족 을 만 드 는 데 사용 되 며 구체 적 인 유형 을 명확 하 게 밝 힐 필요 가 없다.
추상 적 인 공장 모델 은 고객 이 추상 적 인 인 인 터 페 이 스 를 사용 하여 관련 제품 을 만 들 수 있 도록 허용 하고 실제 생산 된 구체 적 인 제품 이 무엇 인지 알 필요 가 없다.이렇게 하면 고객 은 구체 적 인 제품 에서 결합 을 풀 수 있다.
사례 코드 다운로드
요약: 추상 적 인 공정 모델 은 대상 을 만 드 는 공장 방법 모델 의 집합 으로 볼 수 있다.
추상 적 인 공장 모델 은 같은 방안 의 교체 에 사용 할 수 있다.예 를 들 어 데이터 베이스 전체 방안 의 교체, 데이터 베 이 스 는 데이터 베 이 스 를 만 들 고 데이터 베 이 스 를 삭제 하 며 데이터 베 이 스 를 업데이트 하고 데이터 베 이 스 를 삽입 하 는 등 일련의 조작 을 가지 고 있 습 니 다. access 나 SqlServer 구조 에서 모든 조작 에 대해 다 를 수 있 습 니 다.우 리 는 추상 적 인 공장 방법 을 사용 하여 두 개의 공장 을 실현 할 수 있다. 한 개의 공장 이 상술 한 작업 의 실현 을 완성 하지 않 으 면 우 리 는 그들 을 편리 하 게 교체 할 수 있 고 데이터 뱅 크 의 조작 인터페이스 에 어떠한 영향 도 주지 않 을 것 이다.
제품 의 인 터 페 이 스 를 생산 하 다.
public interface CongeeAttachmentInterface {
Zhibei createZhibei();
Xiguan createXiguan();
String createAdword();
}
구체 적 인 실현:
public class AbstractFactoryA implements CongeeAttachmentInterface{
@Override
public Zhibei createZhibei() {
// TODO Auto-generated method stub
return new AZhibei();
}
@Override
public Xiguan createXiguan() {
// TODO Auto-generated method stub
return new SmallXiguan();
}
@Override
public String createAdword() {
// TODO Auto-generated method stub
return " ";
}
}
public class AbstractFactoryB implements CongeeAttachmentInterface{
@Override
public Zhibei createZhibei() {
// TODO Auto-generated method stub
return new BZhibei();
}
@Override
public Xiguan createXiguan() {
// TODO Auto-generated method stub
return new BigXiguan();
}
@Override
public String createAdword() {
// TODO Auto-generated method stub
return " , ";
}
}
죽 종류:
public abstract class Congee {
private String name;
protected Zhibei zhibei;
protected Xiguan xiguan;
protected String adWord;
protected CongeeAttachmentInterface attachment;
public Congee(String name,CongeeAttachmentInterface atta){
this.name = name;
attachment = atta;
init();
}
abstract void init();
public void takeCup(){
System.out.println(" "+zhibei+", :"+adWord);
System.out.println(" :"+xiguan);
}
public void fillCongee(){
System.out.println(" "+name);
}
public void sell(){
System.out.println(" , :"+getPrice(name)+" ");
}
private double getPrice(String name){
if(name.equals(" ")){return 2;}
if(name.equals(" ")){return 2;}
if(name.startsWith(" ")){return 2.5;}
if(name.equals(" ")){return 2.5;}
return 0;
}
}
구체 적 인 죽 류 는 팔보죽 이 하나 밖 에 없다.
public class Babaozhou extends Congee{
public Babaozhou(CongeeAttachmentInterface attach) {
super(" ",attach);
}
@Override
void init() {
zhibei = attachment.createZhibei();
xiguan = attachment.createXiguan();
adWord = attachment.createAdword();
}
}
종이 컵 류
public abstract class Zhibei {
@Override
public abstract String toString();
}
구체 적 인 종이 컵 류, 공장 A, 공장 B 에서 생산 한
public class AZhibei extends Zhibei{
@Override
public String toString() {
// TODO Auto-generated method stub
return " A ";
}
}
public class BZhibei extends Zhibei{
@Override
public String toString() {
// TODO Auto-generated method stub
return " B ";
}
}
빨대
public abstract class Xiguan {
@Override
public abstract String toString();
}
public class BigXiguan extends Xiguan{
@Override
public String toString() {
// TODO Auto-generated method stub
return " ";
}
}
public class SmallXiguan extends Xiguan{
@Override
public String toString() {
// TODO Auto-generated method stub
return " ";
}
}
죽 집:
public abstract class CongeeStoreBase {
public CongeeStoreBase(){
}
public void buyCongee(String name){
System.out.println(" :"+name);
sellCongee(name);
}
private void sellCongee(String name){
Congee congee = getCongee(name);
congee.takeCup();
congee.fillCongee();
congee.sell();
}
protected abstract Congee getCongee(String name);
}
public class CongeeStore extends CongeeStoreBase{
private CongeeAttachmentInterface atta;
public CongeeStore(CongeeAttachmentInterface atta){
this.atta = atta;
}
public void setAtta(CongeeAttachmentInterface attachment){
atta = attachment;
}
@Override
protected Congee getCongee(String name) {
/*if(name.equals(" ")){
return new Damizhou();
}else if(name.equals(" ")){
return new Xiaomizhou();
}else*/ if(name.equals(" ")){
return new Babaozhou(atta);
}/*else {
return new Congee("null");
}*/
return null;
}
}
Test.java
public class Test {
public static void main(String args[]){
//
CongeeAttachmentInterface atta1 = new AbstractFactoryA();
CongeeAttachmentInterface atta2 = new AbstractFactoryB();
//
CongeeStore congeeStore = new CongeeStore(atta1);
//
congeeStore.buyCongee(" ");
// A , , ,
congeeStore.setAtta(atta2);
System.out.println("---------------------------------");
//
congeeStore.buyCongee(" ");
}
}
테스트 결과:
:
A , :
:
, :2.5
---------------------------------
:
B , : ,
:
, :2.5
요약:
간단 한 공장 은 진정한 디자인 모델 은 아니 지만 간단 한 방법 이 라 고 할 수 있다.
공장 방법 은 계승 을 사용 하여 대상 의 창설 을 하위 클래스 에 위탁 하고 하위 클래스 는 공장 방법 클래스 창설 대상 을 실현 한다.
추상 적 인 공장 사용 대상 의 조합, 대상 의 설립 은 공장 인터페이스 에 노출 되 는 방법 에서 이 루어 진다.
모든 공장 모델 은 응용 프로그램 과 구체 적 인 유형 간 의 의존 을 줄 여 소나무 결합 을 촉진 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 (2) - 추상 공장 및 진화 의 길3. 뇌 사 공장 이 추상 화 되 었 으 니 우 리 는 왜 뇌 사 87 과 104 의 생산 을 모두 뇌 사 공장 에 두 지 않 았 을 까? 여기 서 저 는 공장 방법의 진화 의 길 을 설명 할 뿐만 아니 라 구조 에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.