Агент шаблона динамического агента Java. Роль представляет собой другую роль для выполнения определенных конкретных функций.
Например: отношения между производителями, посредниками и покупателями. Когда покупатели покупают продукцию, они не имеют дела напрямую с производителем и не знают, как производится продукция. Покупатели имеют дело только с посредниками, а посредники могут упаковывать продукцию. и предоставляются некоторые послепродажные услуги.
Шаблон агента имеет три роли: 1. Роль абстрактного субъекта. 2. Роль субъекта агента. 3. Фактическая роль агента.
Давайте посмотрим на реальность статического прокси.
В качестве примера я возьму танк.
Роль абстрактной темы: Подвижная
общедоступный интерфейс Moveable {
недействительный ход();
}
публичный класс TanktimeProxy реализует Moveable{
частный Передвижной т;
общественный TanktimeProxy (Подвижный т) {
супер();
это.т = т;
}
@Override
общественный недействительный ход () {
долгое время1 = System.currentTimeMillis();
System.out.println("time1="+time1);
т.переместить();
долгое время2 = System.currentTimeMillis();
System.out.println("time2="+time2);
System.out.println("Время работы:"+(время2-время1));
}
}
публичный класс Tank реализует Moveable{
@Override
общественный недействительный ход () {
System.out.println("Танк движется.....");
}
}
общественный класс TestTank {
public static void main(String[] args) {
Танк т = новый танк();
Подвижное перемещение = новый TanktimeProxy(t);
переместить.переместить();
}
}
Далее я хочу добавить дневник до и после метода move() ТанК:
Мне нужно написать еще один класс для реализации этой функции:
публичный класс TanklogProxy реализует Moveable{
частный Передвижной т;
общественный TanklogProxy (Подвижный т) {
супер();
это.т = т;
}
@Override
общественный недействительный ход () {
System.out.println("начать движение....");
т.переместить();
System.out.println("конец перемещения......");
}
}
общественный класс TestTank {
public static void main(String[] args) {
Танк т = новый танк();
Подвижное перемещение = новый TanktimeProxy(t);
Перемещаемый movet = новый TanklogProxy(move);
перемещение.переместить();
}
}
Если я хочу добавить больше функций до и после вызова метода move() Tank, нужно ли мне писать больше ролей темы агента? Это сделает код слишком толстым и сложным в обслуживании. Какой способ можно? можно использовать для решения этой проблемы? Ответ: да. Мы можем динамически генерировать роли темы агента для прокси-сервера всех объектов-прокси.
В конце статьи хотелось бы поделиться с вами шуточными цитатами программистов: IBM и Boeing 777.
Boeing 777 — первый самолет, когда-либо спроектированный и изготовленный полностью в компьютерной виртуальной реальности с использованием оборудования, полностью предоставленного IBM. Перед испытательным полетом президент Boeing с энтузиазмом пригласил технического директора IBM принять участие в испытательном полете, но руководитель сказал: «Ах, это большая честь, но у моей жены в этот день день рождения, так что…»…
Услышав это, генеральный директор Boeing разозлился: «Трус, я еще не назвал тебе дату испытательного полета!»