目录
一 工厂模式
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);
}
}



















