桥接模式

canca canca
2007-03-26 14:52
1
0

//桥接模式
//CopyRight(C) CAnca Software Office 2006.
//Created by CAnca.

import java.util.*;

public class BridgeMode{
 public static void main(String[] args){
  buy buy1 = new concreteBuyA();
  buy buy2 = new concreteBuyB();
  buy1.Add("apple",10,3F);
  buy1.setAgio();
  buy1.pay(40F);
  
  buy2.Add("banana",50,4F);
  buy2.setAgio();
  buy2.pay(123F);
 }
}

abstract class buy{
 protected Hashtable ht = null;
 protected float agio = 1.0F;
 public buy(){
  ht = new Hashtable();
 }
 public void Add(String foodName,int count,float money){
  ht.put(foodName,count * money);
 }
 
 protected float payCount(){
  Enumeration ex = ht.keys();
  float count = 0.0f;
  while(ex.hasMoreElements()){
   String keyValue = (String)ex.nextElement();
   count += Float.parseFloat(ht.get(keyValue).toString());
  }
  return count;
 }
 public abstract void setAgio();
 public abstract float pay(float money);
}

class concreteBuyA extends buy{
 public void setAgio(){
  this.agio = 0.9F;
 }
 
 public float pay(float money){
  float count = payCount();
  if(money >= count * agio){
   System.out.println("concreteBuyA:付费成功!");
   return money - count * agio;
  }else{
   System.out.println("concreteBuyA:不够现金!");
   return -1.0f;
  }
 }
}

class concreteBuyB extends buy{
 public void setAgio(){
  if(this.payCount() > 100)
   this.agio = 0.7F;
 }
 
 public float pay(float money){
  float count = payCount();
  if(money >= count * agio){
   System.out.println("concreteBuyB:付费成功!");
   return money - count * agio;
  }else{
   System.out.println("concreteBuyB:不够现金!");
   return -1.0f;
  }
 }
}

发表评论