内部类和设计模式
1、什么是内部类(Inner Classes)在Java中,允许在一个类(或方法、语句块)的内部定义另一个类,成为内部类。内部类和外层封装他的类属于所属关系,一般只用在定义她的类或语句块之内,实现一些没有通用意义的功能逻辑,在外部引用它时必须给出完整的名称。优点:使源代码更加清晰,减少命名冲突,提高可视性。public class Out{class Inner{//这里定义了一个内部类。}}内部
1、什么是内部类(Inner Classes)
在Java中,允许在一个类(或方法、语句块)的内部定义另一个类,成为内部类。内部类和外层封装他的类属于所属关系,一般只用在定义她的类或语句块之内,实现一些没有通用意义的功能逻辑,在外部引用它时必须给出完整的名称。
优点:使源代码更加清晰,减少命名冲突,提高可视性。
public class Out{
class Inner{
//这里定义了一个内部类。
}
}
内部类特点:
1、内部类可以体现逻辑类的从属关系,同时对于其他类可以控制内部类对外不可见。
2、外部类的成员变量作用域是整个外部类,包括嵌套类。但外部类不能访问嵌套类的private成员。
3、逻辑上相关的类可以在一起,可以有效地实现信息隐藏。
4、内部类可以直接访问外部类的成员。可以用此实现多继承
5、编译后内部类也为单独的类,不过名称为outclass$inclass的形式。
public class Outer {
class Inner{
public int a=3;
private int b=5;
}
}
class Other{
public static void main(String[] args) {
Outer o=new Outer();
Outer.Inner oi=o.new Inner();//内部类的创建
System.out.println(oi.a);
System.out.println(oi.b);//编译异常
}
}
内部类的分类:
类级:成员式,有static修饰。
对象级:成员式,普通,无static修饰。
本地内部类:局部式。
匿名级:局部式。
2、设计模式
在面向对象的软件设计中,总是希望避免重复设计或尽可能少做重复设计。设计模式使人们更加简单方便的复用成功的设计和体系结构。
模式四要素:
模式名称(pattern name):助记名
问题(problem):描述问题的前因后果以及必须满足的先决条件。
解决方案(solution):解决问题的抽象描述(元素组合)。
效果(consequences):描述模式的显示隐式好处和影响。
常用的设计模式 单例模式:某个类只能有一个实例,提供一个全局的访问点。分为懒汉模式和饿汉模式。
//饿汉模式,先创建。
public class Singleton{
//私有构造函数,无法主动创建
private Siingleton(){}
//静态私有变量,供内部调用。
private static Singleton instance=new Singleton();
//公共静态方法,可直接访问,但始终只有一个对象。
public static Singleton getinstance(){
return instance();
}
}
//懒汉模式,使用时再创建,效率高
public class Singleton{
//私有构造函数,无法主动创建
private Singleton(){}
//静态私有变量,供内部调用
private static Single instance=null;
//公共静态方法,可直接访问,但始终只有一个对象。
public static Singleton getinstance(){
if(instance==null) instance=new Singleton();
return instance;
}
}
工厂方法:定义一个创建对象的接口,让子类决定实例化哪个类。
抽象工厂:创建相关或依赖的家族,而无需明确指示具体类。
建造者模式:封装一个复杂对象的构建过程,并可以按步骤构造。
原型模式:通过复制现有的实例来创建新的实例。
适配器模式:将一个类的方法或接口转换为客户希望的另一个接口。
组合模式:将对象组合成树形结构以表示“整体-部分”的层次结构。
装饰模式:动态的给对象添加新的功能。
代理模式:为其他对象提供一个代理以便控制这个对象的访问。
享元(蝇量)模式:通过共享技术来有效地支持大量细粒度的对象。
外观模式:对外提供一个统一的方法,来访问子系统中的一群接口。
桥接模式:将抽象部分和实力部分分离,使他们都可以独立的变化。
模板模式:定义一个算法结构,而将一些步骤延迟到子类实现。
解释器模式:给定一个语言,定义他的文法的一种表示,并定义一个解析器。
策略模式:定义一个算法,把他们封装起来,并且使他们可以相互替换。
状态模式:允许一个对象在其对象内部状态改变时改变他的行为。
观察者模式:对象间的一对多的依赖关系。
备忘录模式:在不破坏封装的前提下,保持对象的内部状态。
中介者模式:用一个中介对象来封装一系列的对象交互。
命令模式:将命令请求封装为一个对象,使得可以用不同的请求来进行参数化。
访问者模式:在不改变数据结构的前提下,增加作用于一组对象元素的新功能。
责任链模式:将请求的发送者和接受者解耦,使的多个对象都有处理这个请求的机会。
迭代器模式:一种遍历访问聚合元素中各个对象的方法,不暴露该对象的内部结构。
更多推荐
所有评论(0)