Android开发基础----Java基础(7)

学习内容

  • 单例设计模式
  • 抽象类
  • 抽象类实现造房子
一、单例设计模式

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();
    }
}

你可能感兴趣的:(Android开发基础----Java基础(7))