Мар
28
Адаптер для двух интерфейсов
package com.javarush.test.level19.lesson03.task03; /* Адаптация нескольких интерфейсов Адаптировать IncomeData к Customer и Contact. Классом-адаптером является IncomeDataAdapter. Инициализируйте countries перед началом выполнения программы. Соответствие кода страны и названия: UA Ukraine RU Russia CA Canada Дополнить телефонный номер нулями до 10 цифр при необходимости */ import java.util.HashMap; import java.util.Map; public class Solution { public static Map<String,String> countries = new HashMap<String,String>(); static { countries.put("UA", "Ukraine"); countries.put("RU", "Russia"); countries.put("CA", "Canada"); countries.put("US", "United States"); } public static class IncomeDataAdapter implements Customer, Contact{ private IncomeData incomeData; public IncomeDataAdapter(IncomeData incomeData) { this.incomeData = incomeData; } @Override public String getName() { return this.incomeData.getContactLastName() + ", " + this.incomeData.getContactFirstName(); } @Override public String getPhoneNumber() { String clearPhoneNumber = Integer.valueOf(this.incomeData.getPhoneNumber()).toString(); if (clearPhoneNumber.length() < 10) { while (clearPhoneNumber.length() < 10) clearPhoneNumber = "0" + clearPhoneNumber; } String newPhoneName = "+" + this.incomeData.getCountryPhoneCode() + "(" + clearPhoneNumber.substring(0, 3) + ")" + clearPhoneNumber.substring(3, 6) + "-" + clearPhoneNumber.substring(6,8) + "-" + clearPhoneNumber.substring(8); return newPhoneName; } @Override public String getCompanyName() { return this.incomeData.getCompany(); } @Override public String getCountryName() { String countryName = ""; for (Map.Entry<String, String> pair : countries.entrySet()){ if (pair.getKey().equals(this.incomeData.getCountryCode())) countryName = pair.getValue(); } return countryName; } } public static interface IncomeData { String getCountryCode(); //example UA String getCompany(); //example JavaRush Ltd. String getContactFirstName(); //example Ivan String getContactLastName(); //example Ivanov int getCountryPhoneCode(); //example 38 int getPhoneNumber(); //example 501234567 } public static interface Customer { String getCompanyName(); //example JavaRush Ltd. String getCountryName(); //example Ukraine } public static interface Contact { String getName(); //example Ivanov, Ivan String getPhoneNumber(); //example +38(050)123-45-67 } //Тестовый main public static void main(String[] args) { class iData implements IncomeData { @Override public String getCountryCode() { return "US"; } @Override public String getCompany() { return "Planet Express"; } @Override public String getContactFirstName() { return "Bender"; } @Override public String getContactLastName() { return "Rodriguez"; } @Override public int getCountryPhoneCode() { return 1; } @Override public int getPhoneNumber() { return 666666; } } IncomeDataAdapter adapter = new IncomeDataAdapter(new iData()); System.out.println(adapter.getCompanyName()); System.out.println(adapter.getCountryName()); System.out.println(adapter.getPhoneNumber()); System.out.println(adapter.getName()); } }