设计模式
创建型模式
创建型模式有5种,不含简单工厂
简单工厂示例(静态工厂)
DataSource ds=DataSource Factory.getInstance("mysql");
工厂方法示例
使用数据源服务 获取数据源
几个角色: 抽象工厂、具体工厂、抽象产品、具体产品
对应:DataSource(数据源信息)、MySqlDataSource(Mysql数据源)、Connection (连接), MysqlConnection( 连接)
// 获取Mysql连接
(1)DataSource ds=new MySqlDataSource();
(2)Connection conn=ds.getConnection();
//若改为 oracle
(1)改为 DataSource ds=new OracleDataSource();
抽象工厂示例
具体的工厂类 可以持有多种操作
DataSource ds=new MySqlDataSource();
//多种产品
Connection conn=ds.getConnection();
ConnInfo info= ds.TestConnection();
建造者模式
class Person{
//必填参数 姓名、性别
private String name;
private String gender;
//可选参数 身高、体重、年龄
private String height;
private String weight;
private String age;
//构造方法
public Person(Builder builder){
name=builder.name;
gender=builder.gender;
height=builder.height;
weight=builder.weight;
age=builder.age;
}
class static Builder{
private final String name;
private final String gender;
private String height;
private String weight;
private String age;
//必填参数
public Person(String name,String gender){
this.name=name;
this.gender=gender;
}
//非必填参数
public Builder height(String val){
this.height=val;
return this;
}
public Builder weight(String val){
this.weight=val;
return this;
}
public Builder age(String val){
this.age=val;
return this;
}
//构造对象
public Person build(){
return new Person(this);
}
}
}
//调用时
Person p=new Person("张飞","男").height("187").weight("155").age("34").build();
原型模式
从原型拷贝副本,对副本进行操作
Object obj=new Object();
Object copy=obj.clone();
单例模式
维持一个单例对象
class Connection{
private static Connection conn;
private Connection();
public Connection getInstance(){
if(conn==null){
conn=new Connection();
}
return conn;
}
}
行为型模式
模板方法模式
不变的行为提取到超类,对改变的行为让子类重写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗