简单Java代理
代理顾名思义帮助某人某物做某事。代理的好处是我想让你做的你就做,不想给你做的我就不给你做。代码:
public class CarControls {
public void up(int velocity){
System.out.println("汽车向前移动:" + velocity + "米。");
}
public void down(int velocity){
System.out.println("汽车向后移动:" + velocity + "米。");
}
public void left(int velocity){
System.out.println("汽车向右移动:" + velocity + "米。");
}
public void right(int velocity){
System.out.println("汽车向左移动:" + velocity + "米。");
}
public void stop(){
System.out.println("汽车停止。");
}
}
public class CarControlsAgency {
private String carName;
private CarControls controls;
public CarControlsAgency(String carName){
this.carName = carName;
controls = new CarControls();
}
public String getCarName(){
return carName;
}
public void up(int velocity){
controls.up(velocity);
}
public void down(int velocity){
controls.down(velocity);
}
public void left(int velocity){
controls.left(velocity);
}
public void right(int velocity){
controls.right(velocity);
}
public void stop(){
controls.stop();
}
}
public class MainTest {
public static void main(String[] args) {
CarControlsAgency agency = new CarControlsAgency("宝马");
System.out.println("车子: " + agency.getCarName());
agency.down(20);
agency.up(40);
agency.right(21);
agency.left(77);
agency.stop();
}
}
结果输出:
车子: 宝马
汽车向后移动:20米。
汽车向前移动:40米。
汽车向左移动:21米。
汽车向右移动:77米。
汽车停止。
代理的好处很多,假如有一个类专门用于存储个人信息,现在又两个权限,第一个权限为:可以访问:姓名,电话号码,地址;第二个权限为:可以访问:id,姓名。
个人信息类:
public class PersonInfo {
//编号
private int id;
//姓名
private String name;
//电话
private String telephone;
//地址
private String address;
public PersonInfo(int id,String name,String telephone,String address){
this.id = id;
this.name = name;
this.telephone = telephone;
this.address = address;
}
public int getId(){
return id;
}
public String getName(){
return name;
}
public String getTelephone(){
return telephone;
}
public String getAddress(){
return address;
}
}
代理权限1:
/*
* 此代理类需要得到:姓名,电话,地址
*/
public class PersonInfoAgency {
//代理名字
private String agencyName;
private PersonInfo person;
public PersonInfoAgency(int id,int age,String name,String address,
String telephone,String agencyName){
this.agencyName = agencyName;
person = new PersonInfo(id, agencyName, telephone, address);
}
public String getAgencyName(){
return agencyName;
}
public String getName(){
return person.getName();
}
public String getTelephone(){
return person.getTelephone();
}
public String getAddress(){
return person.getAddress();
}
}
代理权限2:
/*
* 此代理类只需得到姓名和id
*/
public class PersonInfoAgency1 {
//代理名字
private String agencyName;
private PersonInfo person;
public PersonInfoAgency1(int id,int age,String name,String address,
String telephone,String agencyName){
this.agencyName = agencyName;
person = new PersonInfo(id, agencyName, telephone, address);
}
public String getAgencyName(){
return agencyName;
}
public int getId(){
return person.getId();
}
public String getName(){
return person.getName();
}
}
测试:
public class MainTest {
public static void main(String[] args) {
/*CarControlsAgency agency = new CarControlsAgency("宝马");
System.out.println("车子: " + agency.getCarName());
agency.down(20);
agency.up(40);
agency.right(21);
agency.left(77);
agency.stop();*/
int id = 1;
int age = 10;
String name = "YJ";
String telephone = "110";
String address = "重庆";
String agencyName1 = "权限1";
String agencyName2 = "权限2";
PersonInfoAgency pa1 = new PersonInfoAgency(id, age, name, address,
telephone, agencyName1);
PersonInfoAgency1 pa2 = new PersonInfoAgency1(id, age, name, address,
telephone, agencyName2);
print1(pa1);
print2(pa2);
}
public static void print1(PersonInfoAgency pa){
System.out.println(pa.getAgencyName() + " 可以访问以下数据: " );
System.out.println(" 姓名: "+ pa.getName() + " ,电话号码: " +pa.getTelephone() +
", 地址: " + pa.getAddress() );
}
public static void print2(PersonInfoAgency1 pa){
System.out.println(pa.getAgencyName() + " 可以访问以下数据: " );
System.out.println("编号: " + pa.getId() + ", 姓名: " + pa.getName());
}
}
输出如下:
权限1 可以访问以下数据:
姓名: 权限1 ,电话号码: 110, 地址: 重庆
权限2 可以访问以下数据:
编号: 1, 姓名: 权限2