java设计模式笔记

(一)静态代理

1.真实角色

2.代理角色,包含真实角色的引用

3.两者实现相同的接口

interface Merry{//接口
    merry();
}

class You implements Merry{//真是角色
    public void merry(){
        System.out.println("你和小仙女结婚了!");
    }
}

class WeddingCompany implements Merry{//代理角色
    Merry You;//真是角色的引用
    private void before(){}
    private void after(){}
    WeddingCompany(Merry You){this.You = You;}
    public void Merry(){ 
        You.merry();
        before();
        after();
    }
}
public static void main(String[] args){
    Merry You = new You();
    WeddingCompany com = new WeddingCompany(You);
    com.merry();
}

输出结果为:你和小仙女结婚了!


(二)、单例设计模式

* 1.单例设计模式:确保一个类只有一个对象
* 2.构造器私有化
* 3.声明一个私有的静态变量
* 4.创建对外的公共静态方法访问该变量,如果变量没有赋值对象,则创建对象

public class JVM {//懒汉式
	
	private static JVM instance = null;//声明一个私有的静态变量
	
	//构造器私有化,避免外部直接创建对象
	private JVM() {
		
	}
	
	//创建对外的公共静态方法访问该变量,如果变量没有赋值对象,则创建对象
	public static JVM getInstance() {
		if(instance == null) {
			synchronized(JVM.class){//静态方法中不含this,锁类.class		
				if(instance == null) {
					instance = new JVM();
				}
		    }
		}
		return instance;
	}
}

public class JVM {//饿汉式
	
	private static class JVMholder{//内部类,用来延缓加载时间
		private static JVM instance = new JVM();//声明一个私有的静态变量,并初始化
	}
	//构造器私有化,避免外部直接创建对象
	private JVM() {
		
	}
	
	//创建对外的公共静态方法访问该变量,如果变量没有赋值对象,则创建对象
	public static JVM getInstance() {
		return JVMholder.instance;
	}
}


(三)、装饰设计模式

一个类包装另一个类,提升类的功能

package java_07_11;

/**
 * 装饰设计模式
 * @author xiao
 * @for training
 */

public class DecorateDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Voice v = new Voice();
		v.say();
		Trumpt trumpt = new Trumpt(v);
		trumpt.say();

	}

}

class Voice{//声音
	private int i;//音量
	Voice(){
		i = 100;
	}
	public int getI() {
		return i;
	}
	public void say(){//说话
		System.out.println(i);
	}
}

class Trumpt{//喇叭
	Voice v;
	Trumpt(Voice v){
		this.v = v;
	}
	public void say() {//扩大音量
		System.out.println(v.getI() * 100);
	}
}


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值