我想用下面是什麼代碼就知道基地: 1. ISubject和操作() 2. realSubject:RealSubject和 3.操作() realSubject.Operation() 代理設計的UML圖上模式什麼是代理設計模式中的代碼的ISubject和Operation()?
//Payment.java
import java.math.*; import java.rmi.*;
public interface Payment extends Remote{
public void purchase(PaymentVO payInfo, BigDecimal price)
throws PaymentException, RemoteException; }`
//PaymentProxy.java
import java.net.*;
import java.math.*;
import java.rmi.*;
public class PaymentProxy implements PaymentService{
private Payment implementation;
private String serviceMachine = "localhost";
private String serviceName = "paymentService";
public PaymentProxy() throws ServiceUnavailableException{
lookupRemoteService();
}
private void lookupRemoteService() throws ServiceUnavailableException{
try{
String url = "//" + serviceMachine + "/" + serviceName;
Object lookup = Naming.lookup(url);
if (lookup instanceof Payment){
implementation = (Payment)lookup;
}
else{
throw new ServiceUnavailableException("Cannot locate remote service");
}
}
catch (RemoteException exc){
throw new ServiceUnavailableException("Error during remote service lookup", exc);
}
catch (NotBoundException exc){
throw new ServiceUnavailableException("Remote service is not registered with naming server", exc);
}
catch (MalformedURLException exc){
throw new ServiceUnavailableException("Malformed URL for naming lookup", exc);
}
}
public void setServiceMachine(String machineName){
serviceMachine = machineName;
}
public void setServiceName(String svcName){
serviceName = svcName;
}
public void purchase(PaymentVO pay, BigDecimal price) throws PaymentException, ServiceUnavailableException{
try{
if (implementation != null){
implementation.purchase(pay, price);
}
}
catch (RemoteException exc){
try{
lookupRemoteService();
implementation.purchase(pay, price);
}
catch (RemoteException exc2){
throw new PaymentException("Cannot process payment: remote communication problems with payment service", exc2);
}
}
}
}`
//PaymentImpl.java
import java.math.*;
import java.net.*;
import java.rmi.*;
import java.rmi.server.*;
public class PaymentImpl implements Payment{
private static final String PAYMENT_SERVICE_NAME = "paymentService";
public PaymentImpl() throws RemoteException, MalformedURLException{
UnicastRemoteObject.exportObject(this);
Naming.rebind(PAYMENT_SERVICE_NAME, this);
}
public void purchase(PaymentVO payInfo, BigDecimal price)
throws PaymentException{
}
}`
請修改代碼。現在它是不可讀的。 – 2014-12-13 09:01:52
我是新的使用堆棧。對不起 – 2014-12-13 09:08:04
ISubject/operation()在哪裏?你究竟需要什麼? – SMA 2014-12-13 09:16:09