单态设计模式
设计模式:
就是在大量的实践过程和理论中总结出来的一套关于代码结构、编程风格以及解决问题的方式。
所谓单态设计模式就是采取一定的方法保证整个软件系统中,某个类的对象只能存在一个。
有两种实现方式:
1)定义一个类,构造方法为私有。提供一个静态私有实例对象,在提供一个能够获得该对象的方法。
2)不用每次都产生对象,只要第一次使用时生成对象即可。
abstract与interface在Java语言中都是用抽象类来定义的。(这里的抽象类不是abstract class ,它表示一个抽象体)。
在面向对象中,所有的对象都是通过类来描绘,反过来并不是所有的类都能描绘对象。这样的类不能没有包含足够的信息来描绘一个具体的对象。就是抽象类。用来表征对问题领域进行分析、设计中的得出的抽象概念,是对一系列看上去不同,但本质上相同的具体概念的抽象。表征抽象概念的。抽象类是不能够实例化的。抽象类进行类型隐藏。
特点:1)抽象类无法实例化,但是有构造方法(给子类创建对象时调用)子类在创建对象时,能够明确的告诉父类需要创建一个什么样的父类。
2)抽象类中的静态方法不能是抽象的。
3)抽象方法只有方法的声明,没有具体的实现代码。必须由子类实现。
4)含有抽象方法的类必须被声明抽象类。
5)抽象的子类必须重写所有的抽象方法后才能被实例化,否则这个子类也要声明成抽象的。
6)抽象类可以声明变量、常量、普通方法和静态变量和静态方法。
接口 :
1)接口没有构造方法不能够被实例化,不能用来创建对象
2)是对某个事物对外提供的一些功能的申明
3)使用接口声明的都是最终的变量(常量),只有方法的声明,这些自动为public。
4)接口中不能有静态方法。
5)实现接口是一种特殊的继承
6)class “like-a” interface。
7)实现接口就要实现接口中的所有方法,除非当前类为抽象类。抽象类可以继承接口。
8)在实现类中可以直接调用接口中的常量。
9)接口可以继承自其它接口。(实现多继承)
区别:
1)抽象类中可以有静态方法,也可以有普通方法。但是静态方法不可以是抽象的。接口中不可以有静态方法。
2)抽象类有构造函数,但是接口中没有。
3)一个类只有一个父类,但是一个类可以实现多个接口。并且实现接口中所有的方法。