设计模式

创建型模式

创建型模式有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;
	}

}


行为型模式

模板方法模式

不变的行为提取到超类,对改变的行为让子类重写

策略模式

代理模式

posted @ 2022-06-15 21:32  赵钱富贵  阅读(26)  评论(0编辑  收藏  举报