标签:
总体来说设计模式分为三大类:
创建型模式5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
Demo:购物流程付款案例
public interface PaymentStrategy {
public void pay(int amount);//付款金额作为参数
}
public class CreditCardStrategy implements PaymentStrategy {//信用卡
private String name;
private String cardNumber;
private String cvv;
private String dateOfExpiry;
public CreditCardStrategy(String nm, String ccNum, String cvv, String expiryDate){
this.name=nm;
this.cardNumber=ccNum;
this.cvv=cvv;
this.dateOfExpiry=expiryDate;
}
@Override
public void pay(int amount) {
System.out.println("信用卡付款金额:"+amount+"元");
}
}
public class PaypalStrategy implements PaymentStrategy {//支付宝
private String userName;
private String password;
public PaypalStrategy(String userName, String pwd){
this.userName=userName;
this.password=pwd;
}
@Override
public void pay(int amount) {
System.out.println("支付宝付款金额:"+amount+"元");
}
}
public class Item {//商品类
private String upcCode;//条形码
private int price;//价格
public Item(String upc, int cost){
this.upcCode=upc;
this.price=cost;
}
public String getUpcCode() {
return upcCode;
}
public int getPrice() {
return price;
}
}
public class ShoppingCart {//购物车
List<Item> items;//购物单
public ShoppingCart(){
this.items=new ArrayList<Item>();
}
public void addItem(Item item){
this.items.add(item);
}
public void removeItem(Item item){
this.items.remove(item);
}
public int calculateTotal(){
int sum = 0;
for(Item item : items){
sum += item.getPrice();
}
return sum;
}
public void pay(PaymentStrategy paymentMethod){
//此处的支付方法接受支付策略作为参数,但是不在其内部保存任何实例变量。
int amount = calculateTotal();
paymentMethod.pay(amount);
}
}
public class ShoppingCartTest {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
Item item1 = new Item("1234",10);
Item item2 = new Item("5678",40);
cart.addItem(item1);
cart.addItem(item2);
//信用卡支付
cart.pay(new CreditCardStrategy("sulikali", "1234567890123456", "786", "12/15"));
//支付宝支付
cart.pay(new PaypalStrategy("username", "mypwd"));
}
}
信用卡付款金额:50元
支付宝付款金额:50元
标签:
原文地址:http://blog.csdn.net/sulikali/article/details/51329549