package
com.freerecharge.agents;
public
interface DTHRechargeAgent {
float recharge(String acountNo,
String pkg, float amount);
}
-----------------------------
: package
com.freerecharge.agents;
public
interface MobileRechargeAgent {
boolean recharge(String mobileNo,
String pkg, float amount);
}
package
com.freerecharge.agent.factory;
import
com.freerecharge.agents.DTHRechargeAgent;
import
com.freerecharge.agents.MobileRechargeAgent;
public
abstract class AbstactAgentFactory {
// factory method for
MobileRechargeAgent component interface
public MobileRechargeAgent
newMobileRechargeAgent() {
MobileRechargeAgent
mobileRechargeAgent = null;
mobileRechargeAgent =
createMobileRechargeAgent();
// any standard
instantiation process
return
mobileRechargeAgent;
}
// factory method for
DTHRechargeAgent component interface
public DTHRechargeAgent
newDTHRechargeAgent() {
DTHRechargeAgent
dthRechargeAgent = null;
dthRechargeAgent =
createDTHRechargeAgent();
return dthRechargeAgent;
}
protected abstract
MobileRechargeAgent createMobileRechargeAgent();
protected abstract DTHRechargeAgent
createDTHRechargeAgent();
}
------------------------------------------------------------------------------
package
com.freerecharge.airtel.agent;
import
com.freerecharge.agents.DTHRechargeAgent;
public class
AirtelDTHRechargeAgent implements DTHRechargeAgent {
@Override
public float recharge(String
acountNo, String pkg, float amount) {
System.out.println("AirTel
DTH Recharge for account no:" + acountNo + " with package " +
pkg + " amount: " + amount);
return amount;
}
}
---------------------------------------------
package
com.freerecharge.airtel.agent;
import
com.freerecharge.agents.MobileRechargeAgent;
public class
AirtelMobileRechargeAgent implements MobileRechargeAgent {
@Override
public boolean recharge(String
mobileNo, String pkg, float amount) {
System.out.println("Recharge
AirTel mobileNo:" + mobileNo + " with amount: " + amount);
return true;
}
}
package
com.freerecharge.airtel.agent.factory;
import
com.freerecharge.agent.factory.AbstactAgentFactory;
import
com.freerecharge.agents.DTHRechargeAgent;
import
com.freerecharge.agents.MobileRechargeAgent;
import
com.freerecharge.airtel.agent.AirtelDTHRechargeAgent;
import
com.freerecharge.airtel.agent.AirtelMobileRechargeAgent;
public class
AirtelAgentFactory extends AbstactAgentFactory {
@Override
protected MobileRechargeAgent
createMobileRechargeAgent() {
return new
AirtelMobileRechargeAgent();
}
@Override
protected DTHRechargeAgent
createDTHRechargeAgent() {
return new
AirtelDTHRechargeAgent();
}
}
package
com.freerecharge.vodafone.agent;
import
com.freerecharge.agents.DTHRechargeAgent;
public class
VodafoneDTHRechargeAgent implements DTHRechargeAgent {
@Override
public float recharge(String
acountNo, String pkg, float amount) {
System.out.println(
"Vodafone
DTH Recharge for account no:" + acountNo + " with package " +
pkg + " amount: " + amount);
return amount;
}
}
package
com.freerecharge.vodafone.agent;
import
com.freerecharge.agents.MobileRechargeAgent;
public class
VodafoneMobileRechargeAgent implements MobileRechargeAgent {
@Override
public boolean recharge(String
mobileNo, String pkg, float amount) {
System.out.println("Recharge
Vodafone mobileNo:" + mobileNo + " with amount: " + amount);
return true;
}
package
com.freerecharge.vodafone.agent.factory;
import
com.freerecharge.agent.factory.AbstactAgentFactory;
import
com.freerecharge.agents.DTHRechargeAgent;
import
com.freerecharge.agents.MobileRechargeAgent;
import
com.freerecharge.vodafone.agent.VodafoneDTHRechargeAgent;
import
com.freerecharge.vodafone.agent.VodafoneMobileRechargeAgent;
public class
VodafoneAgentFactory extends AbstactAgentFactory {
@Override
protected MobileRechargeAgent
createMobileRechargeAgent() {
return new
VodafoneMobileRechargeAgent();
}
@Override
protected DTHRechargeAgent
createDTHRechargeAgent() {
return new
VodafoneDTHRechargeAgent();
}
}
package com.freerecharge.factory;
import
com.freerecharge.agent.factory.AbstactAgentFactory;
import
com.freerecharge.airtel.agent.factory.AirtelAgentFactory;
import
com.freerecharge.vodafone.agent.factory.VodafoneAgentFactory;
// factory
of factory
public class
FreerechargeFactory {
public static AbstactAgentFactory
newAgentFactory(String provider) {
AbstactAgentFactory
agentFactory = null;
if
(provider.equals("airtel")) {
agentFactory
= new AirtelAgentFactory();
} else if
(provider.equals("vodafone")) {
agentFactory
= new VodafoneAgentFactory();
}
return agentFactory;
}
}
------------------------------------
}
package
com.freerecharge.store;
import
com.freerecharge.agent.factory.AbstactAgentFactory;
import com.freerecharge.agents.DTHRechargeAgent;
import
com.freerecharge.agents.MobileRechargeAgent;
import
com.freerecharge.factory.FreerechargeFactory;
public class
FreerechargeStore {
public boolean rechargeMobile(String
provider, String mobileNo, String pkg, float amount) {
boolean flag = false;
AbstactAgentFactory
agentFactory = null;
MobileRechargeAgent
mobileRechargeAgent = null;
agentFactory =
FreerechargeFactory.newAgentFactory(provider);
mobileRechargeAgent =
agentFactory.newMobileRechargeAgent();
mobileRechargeAgent.recharge(mobileNo,
pkg, amount);
flag = true;
return flag;
}
public float rechargeDTH(String
provider, String acountNo, String pkg, float amount) {
AbstactAgentFactory
agentFactory = null;
DTHRechargeAgent
dthRechargeAgent = null;
agentFactory =
FreerechargeFactory.newAgentFactory(provider);
dthRechargeAgent =
agentFactory.newDTHRechargeAgent();
dthRechargeAgent.recharge(acountNo,
pkg, amount);
return amount;
}
}
---------------
package
com.freerecharge.test;
import
com.freerecharge.store.FreerechargeStore;
public class
FreerechargeTest {
public static void main(String[]
args) {
FreerechargeStore store
= new FreerechargeStore();
store.rechargeMobile("vodafone",
"787878", "499-plan", 499);
store.rechargeDTH("airtel",
"AIR3434", "599-plan", 599);
}
}
Comments
Post a Comment