设计模式


 

 

设计模式之装饰设计模式  //实现包装
	 */
	public static void main(String[] args) {
		Student s = new Student();// 学生类开始有的功能
		s.code();
		
		ItcastStudent is = new ItcastStudent(new Student());
		is.code(); //学生包装后的功能
	}

}
interface Coder {
	public void code();
}

class Student implements Coder {
	@Override
	public void code() {
		System.out.println("javase");
		System.out.println("javaweb");
	}
	
}
class ItcastStudent implements Coder {
	private Student s;
	public ItcastStudent(Student s) {
		this.s = s;
	}
	@Override
	public void code() {
		s.code();
		System.out.println("ssh");
		System.out.println("安卓");
		System.out.println("ios");
		System.out.println("数据库");
		System.out.println("............");
	}
	
}





单例设计模式:
//控制只创建唯一的对象
public class SingleDemo {
	public static void main(String[] args) {
        Single s1 = Single.getInstance();
        Single s2 = Single.getInstance();//s1和s2两个引用指向的是同一个对象
	}

}
class Single{(饿汉式)
//如果不设成静态的,下面静态方法不能调用
//如果不设成私有的,方法外就可以直接写成
//Single s =Single.s;这样不好控制
  private static Single s = new Single();

	private Single(){};//私有构造方法是因为不让外面创建此类对象
     //设置成静态,是因为外面主函数是静态的。
	 //可以传递参数,控制什么情况可以放回对象
public static Single getInstance(){
		return s;//返回引用变量
	}
}
//单例延迟模式,上面直接new了一个空间,这个调用才new(懒汉式)
class Single2{
	private static Single2  s = new Single2();
	private Single2(){};
	public static Single2 getInstance(){
		if(s==null){
		   s = new Single2();
		}
		return s;
	}
//单例第三种
class Singleton {
	//1,私有构造函数
	private Singleton(){}
	//2,创建本类对象公共的静态的最终的本类对象
	public static final Singleton s = new Singleton();
}

最好用饿汉式
/*饿汉式和懒汉式的区别
 * 1,饿汉式是以空间换时间
 *   懒汉式是以时间换空间
 * 2,饿汉式在多线程访问不会有安全隐患,不会创建多个对象
 * 	 懒汉式在多线程方法有安全隐患,有可能会创建多个对象
 */

适配器设计模式
interface 和尚 {
	public void 打坐();
	public void 撞钟();
	public void 念经();
	public void 练武();
}

/*
 * 当把一个类声明成抽象的,而这个类中没有抽象方法,作用只有一个,就是不让其他类来创建这个类对象
 * 适配器类中所有的方法都是空的,创建对象调用他也是没有意义的
 */
abstract class 天罡星 implements 和尚{				//适配器类

	@Override
	public void 打坐() {
	}
	@Override
	public void 撞钟() {
	}
	@Override
	public void 念经() {
	}
	@Override
	public void 练武() {
	}
}

class 鲁智深 extends 天罡星 {
	public void 练武(){
		System.out.println("倒拔垂杨柳");
		System.out.println("拳打镇关西");
		System.out.println("大闹野猪林");
		System.out.println("......");
	}
}


 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值