设计模式
创建型模式
创建型模式有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;
}
}
行为型模式
模板方法模式
不变的行为提取到超类,对改变的行为让子类重写