interface IBank { void changeBalance( int amount ); int getBalance(); } class Factory { static IBank makeBank() { return new BankImpl(); } } public class Client { public static void main( String[] args ) { IBank bank = Factory.makeBank(); int[] nums = { 10, 0, 20, 0, -15, 0 }; for (int i=0; i < nums.length; i++) if (nums[i] != 0) bank.changeBalance( nums[i] ); else System.out.println( "balance is " + bank.getBalance() ); } } class BankImpl implements IBank { private int balance; public BankImpl() { balance = 0; } public void changeBalance( int amount ) { balance += amount; // System.out.println( "balance is " + balance ); } public int getBalance() { return balance; } }