当前位置: 首页 > news >正文

设计模式4-工厂模式策略模式

目录

一 工厂模式

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{@Overridepublic void payMoney() {System.out.println("中国银行取钱50元");}
}
public class IcbcBank implements BankInfo{@Overridepublic 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{@Overridepublic void payMoney(int a,int b) {System.out.println("中国银行,累加:"+(a+b));}
}
public class IcbcBank implements BankInfo{@Overridepublic 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);}
}


http://www.mrgr.cn/news/59420.html

相关文章:

  • 【C++】—— 模板进阶
  • 多款云存储平台存在安全漏洞,影响超2200万用户
  • 【C#】DevExpress 提供 自定义皮肤功能、注册皮肤库 。SkinManager
  • 计算机毕业设计Python+大模型租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统
  • pair类型应用举例
  • 《性能之巅:洞悉系统、企业与云计算》-观测工具-笔记
  • 2024 BuildCTF 公开赛|Crypto
  • django中的类属性和类方法
  • 【C/C++ explicit关键字】为什么有了explicit关键字的构造函数 就不能再有 其无参构造函数
  • K 线图下的 BBR
  • Nginx 配置初步 下
  • 【单运放可调频率正弦波电路二阶RC移相震荡文氏桥】2021-12-20
  • 【通义晓蜜CCAI实践】通过任务类型调用通义晓蜜CCAI-对话分析AIO应用
  • 基于云平台的智能家居管理系统设计与通信协议分析
  • Bootstrap 5 容器
  • C语言 | Leetcode C语言题解之第514题自由之路
  • 蒙特卡洛算法(Monte Carlo Algorithm)详细解读
  • 【人工智能-初级】第21章 线性代数与 AI:理解矩阵乘法和特征向量
  • 关于我的数据库——MySQL——第四篇
  • 【2024|滑坡数据集论文解读3】CAS滑坡数据集:用于深度学习滑坡检测的大规模多传感器数据集
  • Linux基础命令:轻松掌握终端操作
  • 道路车辆功能安全 ISO 26262标准(9-2)—面向汽车安全完整性等级 (ASIL) 和安全的分析
  • C语言浮点数实现(一)
  • 自定义类型:联合和枚举【上】
  • OA命令执行漏洞挖掘
  • [专有网络VPC]限制不同交换机下的ECS间的互通