Java가 특정 수준으로 더 깊어지면 디자인 패턴을 이해하면 Java의 인터페이스 또는 추상 클래스 응용 프로그램을 더 깊이 이해할 수 있습니다. 디자인 모드는 Java 중형 시스템에서만 널리 사용됩니다 전자 상거래 시스템에서는 전자 상거래 예제에서 관찰자의 적용을 분석하고 싶습니다.
온라인 상점은 다양한 형태이며 각 사이트에는 고유 한 특성이 있지만 "가입자에게 신속하게 알리기위한 제품 변경"에 대해서는 일반적인 공통점이 있습니다 .
특히 온라인 상점의 제품이 이름과 가격 측면에서 변경되고 시스템이 회원에게 자동으로 알릴 수 있다면 온라인 상점의 주요 기능이 전통적인 상점을 구별합니다. 이를 위해서는 제품 세부 사항이 변경되면 옵저버 가이 변경 사항을 자동으로 관찰하고 적시에 업데이트 또는 조치를 통지 할 수 있도록 옵저버의 역할을 추가해야합니다.
Java API는 또한 우리에게 상용 관찰자 인터페이스 java.util.observer를 제공합니다. 직접 사용하면됩니다.
실제로 사용하려면 java.util.observer를 확장해야합니다.
1. 옵저버를 추가/삭제하는 방법을 제공합니다.
2. 모든 관찰자에게 알림 (NOTISFY) 방법을 제공합니다.
코드 사본은 다음과 같습니다.
// 제품 클래스는 JSP에서 직접 사용하여 UseBean을 사용하여 클래스를 호출 할 수 있습니다
공공 수업 제품은 관찰 가능한 {
개인 문자열 이름;
개인 플로트 가격;
public String getName () {return name;}
public void setName () {
this.name = 이름;
// 변경 사항 SETCHANGED ()를 설정합니다.
NotifyObservers (이름);
}
public float getPrice () {반환 가격;}
public void setPrice () {
this.price = 가격;
// 변경 사항 SETCHANGED ()를 설정합니다.
NotifyObservers (새로운 플로트 (가격));
}
// 다음은 데이터베이스 업데이트 삽입 명령 일 수 있습니다.
public void savetodb () {
.............
}
}
제품 클래스의 SETXXX 메소드에서 JSP 양식이 SETXXX를 호출 할 때 NOTISFYOBSERVER 메소드가 트리거되면 해당 관찰자에게 조치를 취해야한다는 것을 알았습니다.
다음은이 관찰자들의 코드를 살펴 보는 것입니다. 정확히 무엇을 취 했습니까?
코드 사본은 다음과 같습니다.
// Observer NameObserver는 주로 제품 이름 (이름)을 관찰하는 데 사용됩니다.
공개 클래스 NAMEOBSERVER는 관찰자를 구현합니다.
개인 문자열 이름 = null;
공개 무효 업데이트 (관찰 가능한 OBJ, Object Arg) {
if (arg instanceof string) {
이름 = (문자열) arg;
// 제품 이름 변경 값은 이름 System.out.println에 있습니다 ( "NameObserver : 이름 변경"+name);
}
}
}
// Observer PriceObserver는 주로 제품 가격을 관찰하는 데 사용됩니다.
공공 클래스 priceObserver는 관찰자 {
개인 플로트 가격 = 0;
공개 무효 업데이트 (관찰 가능한 OBJ, Object Arg) {
if (arg instanceof float) {
price = ((float) arg) .floatValue ();
System.out.println ( "PriceObserver : 가격 변경"+가격);
}
}
}
JSP에서는이 관찰자 프로그램을 공식적으로 실행할 수 있습니다.
코드 사본은 다음과 같습니다.
<jsp : usebean id = "곱"scope = "session" />
<jsp : setProperty name = "곱"속성 = "*" />
<jsp : usebean id = "nameobs"scope = "session" />
<jsp : setProperty name = "곱"속성 = "*" />
<jsp : usebean id = "priceobs"scope = "session" />
<jsp : setProperty name = "곱"속성 = "*" />
<%
if (request.getParameter ( "save")! = null)
{
product.savetodb ();
out.println ( "제품 데이터 변경이 저장되고 고객이 자동으로 통지되었습니다");
}또 다른{
// 옵저버 제품에 추가.
Product.AddObserver (priceobs);
%>
//request.getRequesturi ()는이 JSP를 생성하는 프로그램 이름입니다. 이는 <form action = "<%= request.getRequesturi ()%>"method = post>를 부릅니다.
<입력 유형 = 숨겨진 이름 = "저장"값 = "1">
제품 이름 : <입력 유형 = 텍스트 이름 = "이름">
제품 가격 : <입력 유형 = 텍스트 이름 = "가격">
<입력 유형 = 제출>
</form>
<%
}
%>
JSP 프로그램을 실행하면 폼 엔트리 인터페이스가 나타납니다. JSP의.
데이터의 자동 할당 개념이 여기에서 사용되므로 실제 프로그램은 SetName SetPrice 문을 자동으로 실행합니다. 서버 콘솔에서 다음 정보를 찾을 수 있습니다.
코드 사본은 다음과 같습니다.
NAMEOBSERVER : 이름 변경 ????
PriceObserver : 가격 변경 ??? (제품 가격은 JSP 형식으로 입력);
이것은 관찰자가 이미 행동하고 있음을 보여줍니다.
동시에 JSP를 실행하는 브라우저에 대한 정보를 얻게됩니다.
1. 제품 데이터를 저장하고 자동으로 고객에게 알립니다
위의 기사는 JSP의 개념을 사용하기 때문에 많은 자동 동작이 다음과 같이 옵저버를 호출합니다.
코드 사본은 다음과 같습니다.
공개 수업 테스트 {
public static void main (String args []) {
제품 제품 = 신제품 ();
nameobserver nameobs = new nameobserver ();
PriceObserver priceobs = 새로운 priceobserver ();
// 옵저버 제품에 추가.
Product.AddObserver (priceobs);
product.setName ( "오렌지 is red");
Product.SetPrice (9.22F);
}
}
다음 정보를 찾을 수 있습니다.
NAMEOBSERVER : 이름 변경은 오렌지로 변경됩니다
PriceObserver : 9.22로 가격 변동
이것은 관찰자가 행동하고 있음을 보여줍니다.