目录
一 工厂模式
1.1 思想
1.2 案例
一 工厂模式
1.1 思想
* 1.定义一个接口
* 2.定义一个实现类
* 3.定义一个根据传入参数,产生对象的工厂类
* 4.通过工厂类调用具体对象的方法
1.2 案例
1.2.1 接口
public interface BankInfo { public void payMoney(); }
1.2.2 实现类
public class BocBank implements BankInfo{ @Override public void payMoney() { System.out.println("中国银行取钱50元"); } }
public class IcbcBank implements BankInfo{ @Override public void payMoney() { System.out.println("工商银行银行取钱50元"); } }
1.2.3 工厂类
public class ObjectFactory { public BankInfo buildObjectInfo(String str){ if (str == null){ return null; } else if ("boc".equals(str)) { return new BocBank(); } else if ("icbc".equals(str)) { return new IcbcBank(); } else { return null; } } }
1.2.4 调用
/**
* @ClassName: TestFt
* @Description: TODO
* @Author: admin
* 1.定义一个接口
* 2.定义一个实现类
* 3.定义一个根据传入参数,产生对象的工厂类
* 4.通过工厂类调用具体对象的方法
*
*
* @Date: 2024/08/01 20:56:05
* @Version: V1.0
**/
public class TestFt {
public static void main(String[] args) {
ObjectFactory objectFactory = new ObjectFactory();
BankInfo bankInfoBank = objectFactory.buildObjectInfo("icbc");
bankInfoBank.payMoney();
}
}
二 策略模式
2.1 思想
1.定义一个策略接口,在接口中声明一个行为方法
* 2.定义多个策略实现类,并实现策略接口,重写行为方法,实现各自逻辑
* 3.定义一个context上下文,用于调用具体的策略方法,供客户端使用;通过new context的构造函数传入策略对象,然后通过此对象调用策略行为方法。
2.2 案例
2.2.1 接口
public interface BankInfo { public void payMoney(int a,int b); }
2.2.2 实现类
public class BocBank implements BankInfo{ @Override public void payMoney(int a,int b) { System.out.println("中国银行,累加:"+(a+b)); } }
public class IcbcBank implements BankInfo{ @Override public void payMoney(int a, int b) { System.out.println("中国工商银行,扣减:"+(a-b)); } }
2.2.3 策略类
public class StaragePattern { private BankInfo bankInfo; public StaragePattern(BankInfo bankInfo) { this. bankInfo = bankInfo; } public void contextInfo(int a,int b){ bankInfo.payMoney(a,b); } }
2.2.4 调用
/**
* @ClassName: TestS
* @Description: TODO
* 1.定义一个策略接口,在接口中声明一个行为方法
* 2.定义多个策略实现类,并实现策略接口,重写行为方法,实现各自逻辑
* 3.定义一个context上下文,用于调用具体的策略方法,供客户端使用;通过new context的构造函数传入策略对象,然后通过此对象调用策略行为方法。
* https://zhuanlan.zhihu.com/p/680317010
* @Author: admin
* @Date: 2024/08/02 11:28:34
* @Version: V1.0
**/
public class TestS {
public static void main(String[] args) {
// StaragePattern staragePattern = new StaragePattern(new BocBank());
// staragePattern.contextInfo(30,20);
}
}