黑马程序员+Java基础中的设计模式

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

在Java基础学习过程中,感觉设计模式相关知识点有些乱,对此用思维导图及代码做了一些总结和概括,由于本人水平有限,可能会有不完善或错误的地方,敬请指正,谢谢!


图1 设计模式

在Java基础学习过程中介绍了单例设计模式及装饰设计模式。以下用思维导图及代码作了一些介绍。


图2 单例设计模式


图3  装饰模式

懒汉式单例实例:

 class Single{
	 private static Single s= null;//静态私有成变量
	 private Single(){};//私有构造方法
	 public static Single getInstance(){
		 if(s == null){
			 synchronized(Single.class){//同步
				 if(s==null){
					 s = new Single();
				 }
			 }
	 }
		return  s;	
}

俄汉式单力设计模式实例:
public class Singleton1 {  
    //私有的默认构造子  
    private Singleton1() {}  
    //已经自行实例化   
    private static final Singleton1 single = new Singleton1();  
    //静态工厂方法   
    public static Singleton1 getInstance() {  
        return single;  
    }
修饰设计模式实例
public class MyBuffer {
	 private InputStream is;
	 private byte[] b = new byte[1024];
	 int pos=0,count=0;
	 MyBuffer(InputStream is){
		 this.is = is;
	 }
	 //每次从缓冲区中读取一个字节流,返回int型是为了避免连续出现8个1,与条件冲突,用int,
	 //4个字节,前面补0,(将字节和255相与)
	 public int myRead() throws IOException{
		 if(count == 0){
			 count = is.read(b);//将文件中的字符流对象存到指定缓冲区
			 if(count < 0)
				 return -1;
			 pos = 0;
			 byte by = b[pos];
			 pos++;
			 count--; 
			 return by&255;
		}
		 else if(count > 0){
			 byte by = b[pos];
			 pos++;
			 count--; 
			 return by&255;
		 }
		 return -1;
	 }
	 public void myClose() throws IOException{
		 is.close();
	 }

}

public class TestMyBuffer {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		FileInputStream fis=null;
		FileOutputStream fos=null;
		MyBuffer mb=null;
		try {
			fis=new FileInputStream("d:\\1.jpg");
			mb = new MyBuffer(fis);
			fos=new FileOutputStream("d:\\2.jpg");
			while(true){
				int b =mb.myRead();
				if(b==-1)
					break;
				fos.write(b);
			}
		 
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}finally{
			try {
				mb.myClose();
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
			try {
				fos.close();
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
	 
	 
	}
}






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值