学习内容
- 单例设计模式
- 抽象类
- 抽象类实现造房子
一、单例设计模式
1、概念:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
2、优点:对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中,保持程序运行的时候始终只有一个实例存在内存中。
3、实现步骤
(1)、私有化所有的构造方法 不让外部自己去创建
private HttpOperation(){
}
(2)、给外部提供一个静态构造方法 让外部获取当前类的一个对象
(3)、使用synchronized保证线程安全
public static HttpOperation getInstance(){
//判断对象是否有值
if(instance == null){
//加锁,当有多个进程时可以增加安全性
synchronized (HttpOperation.class){
if (instance == null) {
//创建一个对象
instance = new HttpOperation();
}
}
}
return instance;
}
(4)、必须定义一个静态变量来保存当前类唯一的一个变量
(5)、.创建对象 a、饿汉式:静态成员变量直接创建当前累的一个变量 进行赋值;b、懒汉式:默认不创建,当调用时才会创建
//private static HttpOperation instance = new HttpOperation;饿汉式
private static HttpOperation instance;//懒汉式
(6)、外部要创建一个实例只能用getInstance()方法
public class MyClass {
public static void main(String[] args) {
HttpOperation http1 = HttpOperation.getInstance();
HttpOperation http2 = HttpOperation.getInstance();
HttpOperation http3 = HttpOperation.getInstance();
System.out.println(http1);
System.out.println(http2);
System.out.println(http3);
}
}
2.抽象类
(1)概念 :从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性,子类就只需要在抽象类的基础上进行扩展、改造
(2)a、抽象类与抽象方法必须使用abstract修饰,且抽象方法不能有具体的实现方法
b、抽象类不能被实例化 也无法用new关键字实例化
c、可以包含:成员变量、方法、构造方法、内部类
d、含有抽象方法的类只能被定义成抽象类
(3)抽象类与普通类的区别:
a、抽象类不能实例化 普通类可以
b、抽象类里面可以有抽象方法(只申明 不实现) 普通类不行
3.抽象类实现造房子
创建一个包(template_home)
创建一个抽象类DrawMap
ublic abstract class DrawMap {
public void buildHouse(){
//造什么房子
String type = getHouseType();
//什么颜色
String color = getHouseColor();
//需要什么材料
String materia = getMateria();
System.out.println("即将使用"+materia+"造一个"+color+"的"+type);
}
public abstract String getHouseType();
public abstract String getHouseColor();
public abstract String getMateria();
}
创建一个工人类 ( Woker)
public class worker extends DrawMap{
@Override
public String getHouseColor() {
return "五颜六色";
}
@Override
public String getMateria() {
return "钢筋水泥";
}
@Override
public String getHouseType() {
return "乡村小别墅";
}
}
创建一个主程序运行
public class Myclass {
public static void main(String[] args) {
worker xw = new worker();
xw.buildHouse();
}
}