工厂设计模式(匿名类)
来源:互联网 发布:java ocr识别 验证码 编辑:程序博客网 时间:2024/06/08 10:01
package innerclasses;
interface Service{
void method1();
void method2();
}
interface ServiceFactory{
Service getService();
}
class Implementationa1 implements Service{
private Implementationa1(){}
public void method1(){
System.out.println("Implementation1 method1");
}
public void method2(){
System.out.println("Implementation1 method2");
}
public static ServiceFactory factory =
new ServiceFactory() {
@Override
public Service getService() {
// TODO Auto-generated method stub
return new Implementationa1();
}
};
}
class Implementation2 implements Service{
private Implementation2(){}
public void method1(){System.out.println("Implementation2 method1");}
public void method2(){System.out.println("Implenentation2 method2");}
public static ServiceFactory factory =
new ServiceFactory() {
@Override
public Service getService() {
// TODO Auto-generated method stub
return new Implementation2();
}
};
}
public class Factories {
public static void serviceConsumer(ServiceFactory factory){
Service service = factory.getService();
service.method1();
service.method2();
}
public static void main(String[] args){
serviceConsumer(Implementationa1.factory);
serviceConsumer(Implementation2.factory);
}
interface Service{
void method1();
void method2();
}
interface ServiceFactory{
Service getService();
}
class Implementationa1 implements Service{
private Implementationa1(){}
public void method1(){
System.out.println("Implementation1 method1");
}
public void method2(){
System.out.println("Implementation1 method2");
}
public static ServiceFactory factory =
new ServiceFactory() {
@Override
public Service getService() {
// TODO Auto-generated method stub
return new Implementationa1();
}
};
}
class Implementation2 implements Service{
private Implementation2(){}
public void method1(){System.out.println("Implementation2 method1");}
public void method2(){System.out.println("Implenentation2 method2");}
public static ServiceFactory factory =
new ServiceFactory() {
@Override
public Service getService() {
// TODO Auto-generated method stub
return new Implementation2();
}
};
}
public class Factories {
public static void serviceConsumer(ServiceFactory factory){
Service service = factory.getService();
service.method1();
service.method2();
}
public static void main(String[] args){
serviceConsumer(Implementationa1.factory);
serviceConsumer(Implementation2.factory);
}
}
输出
Implementation1 method1
Implementation1 method2
Implementation2 method1
Implenentation2 method2
现在用于Implementation1 和implementation2的构造器都可以是private的,
并且没有任何必要去创建作为工厂的具名类。
另外,你经常只需要单一的工厂对象,因此在本例中它被创建为Service实现中的一个static域。
这样所产生语法也更具有实际意义。
阅读全文
0 0
- 工厂设计模式(匿名类)
- 20160308接口内部类:Scanner、工厂设计模式、匿名类
- 匿名类的工厂模式
- 设计模式--工厂模式(工厂方法、抽象工厂)
- 设计模式 - 工厂模式(简单,工厂方法,抽象工厂)
- Java设计模式--工厂模式(简单工厂+工厂方法)
- 设计模式指工厂模式(简单工厂,抽象工厂)
- Java设计模式-工厂模式(简单工厂+工厂方法)
- 设计模式---简单类工厂
- 设计模式(抽象工厂类)
- 工厂方法(设计模式)
- 设计模式(抽象工厂)
- 设计模式(工厂方法)
- Java(工厂设计模式)
- 设计模式(工厂方法)
- 设计模式(简单工厂)
- 0309学习:匿名类、工厂模式2、嵌套类
- 设计模式之工厂模式系列(简单工厂,工厂模式,抽象工厂模式)
- okhttp学习
- 南阳理工第五题
- U盘启动DOS
- node_acl用法示例
- 爬虫之广度优先&深度优先
- 工厂设计模式(匿名类)
- opencv3_java 图片的ROI的领域合成 AddRoi
- Retrofit学习
- 南阳理工第六题
- JavaScript<2.2>
- c++指向对象成员函数的指针
- LeetCode 563. Binary Tree Tilt
- RecycleView学习
- 【玖哥乱弹】能战胜AlphaGo的人类