java整理笔记09

工厂模式:

public class Factory {
	public static void main(String[] args) {
		BuJiaDi bu=new BuJiaDi();
		bu.run();
		
		Car car=factory("FengHuang");
		car.run();
	}
	
	//工厂:制作汽车
	public static Car factory(String str){
		Car car=null;
		//如果比较字符串常量最好放前面
		if("FengHuang".equals(str)){
			car=new FengHuang();
		}else{
			car=new BuJiaDi();
		}
		
		return car;
	}
}

interface Car{
	void run();
}

//车
class FengHuang implements Car{

	@Override
	public void run() {
		System.out.println("两个轱辘跑..");
	}
	
}

class BuJiaDi implements Car{

	@Override
	public void run() {
		System.out.println("飞一般的感觉...");
	}
	
}

单例模式:

保证一个类只能有一个对象,这个特点形式的类成为单例模式,但是不影响类中原有的功能

单例:
懒汉式:当第一次调用的时候才创建这个实例 ----线程不安全的,效率较高
饿汉式:在类第一次加成完成之后,就创建这个实例 ----线程安全的,效率较低

实现:
	1.构造器私有化
	2.私有的,静态的该类的引用,存储创建唯一的对象的
	3.公共的静态的访问方式 

静态代理:

  • 1.真实角色和代理角色实现相同的接口|继承相同的父类
  • 2.代理角色持有真实角色的引用:成员属性来进行维护
  • 3.代理行为
  • 优点: 减少与真实角色的交流,降低耦合度,起到功能的扩展,方便后期维护

内部类

内部类:类中定义类,就是内部类

成员内部类

  • 静态内部类
  • 私有内部类
  • 局部内部类
  • 匿名内部类

成员内部类:
当内部类作为外部类的成员的时候,就是成员内部类
特点:
1.是成员就具有成员的特点,就是可以使用成员修饰符来修饰
2.是类就有类的特点,可以继承,实现…
3.在外部类中可以通过内部类的对象使用其成员
4.成员内部类中不能定义静态的内容,除了静态的常量

私有内部类
1.私有内部类中可以使用外部类中的私有内容
2.外部类中可以使用私有内部类中的私有内容,需要通过内部类对象使用
3.私有的内部类中只能在外部类中使用,其他类中无法使用

静态内部类:
1.只有静态内部类中可以定义静态的内容,除了静态的常量
2. 静态内部类中使用外部类中的成员,通过外部类对象使用,因为内部类是静态的

局部内部类
1.方法中的内部类
2.不能使用成员修饰符 pubic…static…(final可以)
3.局部只能在它当前定义的方法中使用,通过对象使用
4.如果想要在局部内部类中使用当前方法的参数,这个参数必须被final修饰,在jdk1.8中final可以省略,但是默认

匿名内部类

interface Smoke{
	void smoke();
	void haha();
}
//有些实现类,没有自己本身的作用,就是为了重写抽象方法,浪费类名,项目中可能造作类过多等等..
		//1. 匿名内部类  接口多态
		Smoke s=new Smoke(){  //一个没有名字的实现类的类体,实现了Smoke
			@Override
			public void smoke() {
				System.out.println("吐方块烟圈...");
			}

			@Override
			public void haha() {
				System.out.println("hhhhhhh");
			}
		};
		s.smoke();
		s.haha();
		//2.没有应用接收匿名内部类的对象地址,只能在当前行使用以此
		new Smoke(){  //一个没有名字的实现类的类体,实现了Smoke
			@Override
			public void smoke() {
				System.out.println("吐烟圈...");
			}

			@Override
			public void haha() {
				System.out.println("哈哈哈哈");
			}
		}.haha();
		
		new Demo().smoke();  //匿名对象
		
		//3.做方法的参数
		test(new Smoke(){

			@Override
			public void smoke() {
				System.out.println("边吸烟边笑");
			}

			@Override
			public void haha() {
				System.out.println("边笑边吃饭..");
			}
			
		});
	}
	
	public static void test(Smoke s){
		s.smoke();
	}
}

接口: 特殊的抽象类

interface 接口
class 类

接口的优点:
1.接口是功能体的集合
2.是一个引用数据类型,多实现,单继承
3.解耦
4.规定开发规范

属性:
公共的静态的常量 public static final
public static final可以选择省略(默认)
方法:
public abstract 返回值类型 方法名();
public abstract 可以选择省略(默认)

具体的实现类:重写了所有的抽象方法+按需新增
抽象的实现类:按需重写抽象方法+按需新增
接口之间可以多继承,类和接口之间可以多实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值