Java 匿名内部类 工厂模式
来源:互联网 发布:游戏产业链 知乎 编辑:程序博客网 时间:2024/06/16 09:28
}
public class Outter{
public static final mm=5;//这里声明了个变量,当然我们的关注点是final,这是因为匿名内部类想使用在其外部定义的对象(Java中万物皆对象),就必须要求参数的引用是final
public huhu info() {//创建一个继承自huhu这个接口的匿名类的对象,通过new表达式返回的引用被自动向上转型为对huhu接口的引用
return new huhu(){
//匿名内部类肯定没有构造器咯,因为它名字是啥你都不知道
public int here;//包含字段和方法
public void saySomething() {
System.out.println(“hello”);//插桩,让我们知道程序运行到了此处
}
};//标记表达式的结束,而这个表达式包含了匿名内部类
}
public static void main(String[] args) {
}
}
为了具体说明其关系,这里详细解释:你新建了一个类并实现了huhu这个接口,最后将其向上转型,得到这个接口的引用。
总结:匿名类可以扩展类,也可以实现其接口(只能一个接口),不能兼而有之
用处:对于一些特殊的类,添加些小功能,而这又不适合以接口和继承方式来实现(杀鸡焉用牛刀对吧) 这样简单优雅
这里附上匿名内部类与工程模式的结合实现:(From Think In Java)
public interface BaseService {
void method1();
void method2();
}
public interface ServiceFactory {
BaseService getService();
}
package com.upcsogo.www;
class Implementation1 implements BaseService {
private Implementation1() {
}
@Override
public void method1() {
// TODO Auto-generated method stub
System.out.println("Implementation1 method1");
}
@Override
public void method2() {
// TODO Auto-generated method stub
System.out.println("Implementation2 method2");
}
public static ServiceFactory factory = new ServiceFactory() {
@Override
public BaseService getService() {
// TODO Auto-generated method stub
return new Implementation1();
}
};
}
class Implementation2 implements BaseService {
private Implementation2 () {
}
@Override
public void method1() {
// TODO Auto-generated method stub
System.out.println("Implementation2 method1");
}
@Override
public void method2() {
// TODO Auto-generated method stub
System.out.println("Implemtation2 method2");
}
public static ServiceFactory factory2 = new ServiceFactory() {
@Override
public BaseService getService() {
// TODO Auto-generated method stub
return new Implementation2();
}
};
}
public class FactoriesHere {
/**
* @param args
*/
public static void serviceConsumer(ServiceFactory fac) {
BaseService bs = fac.getService();
bs.method1();
bs.method2();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
serviceConsumer(Implementation1.factory);
serviceConsumer(Implementation2.factory2);
}
}
- Java 匿名内部类 工厂模式
- java匿名内部类实现工厂方法模式
- 匿名内部类工厂方法-内部类
- Java----匿名内部类与适配器模式
- 【幻化万千戏红尘】qianfengDay10-java基础学习:成员内部类、静态内部类、局部和匿名内部类,设计模式之简单工厂模式
- 20160308接口内部类:Scanner、工厂设计模式、匿名类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- Java匿名内部类
- JAVA匿名内部类
- java匿名内部类
- lua 标签解析器
- 数据结构-插入排序 java实现
- POJ 3831 & HDU 3264 Open-air shopping malls(几何)
- Redis安装配置
- 那些年我们踩过的坑之表单reset
- Java 匿名内部类 工厂模式
- Map Task内部实现分析
- Android事件分发
- linux kernel的cmdline参数解析原理分析
- Win7下要求以管理员权限运行程序
- 人生中要制定合理的目标
- C#连接Oracle错误:OCIEnvCreate 失败,返回代码为 -1
- Android4.4 Telephony流程分析——GsmServiceStateTracker管理网络服务状态
- hdu3976[Electric resistance] hdu5006[Resistance] hdu4870[Rating] 高斯消元