关闭

工厂方法模式的结构

标签: 工厂方法模式-结构匿名内部类-实现
180人阅读 评论(0) 收藏 举报
分类:

工厂方法模式:就是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不在负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是 使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

interface Service{
void methodOne();
void methodTwo();
}

interface ServiceFactory{
Service getService();
}

class ImplementationOne implements Service{
ImplementationOne(){};

public void methodOne(){
    System.out.println("ImplementationOne's methodOne()");
}

public void methodTwo() {
    System.out.println("ImplementationOne's methodTwo()");
}

}

class ImplementationTwo implements Service{
ImplementationTwo(){}

public void methodOne() {
    System.out.println("ImplementationTwo's methodOne()");
}
public void methodTwo() {
    System.out.println("ImplementationTwo's methodTwo()");
}

}

class ImplementationOneFactory implements ServiceFactory{
@Override
public Service getService() {
return new ImplementationOne();
}
}

class ImplementationTwoFactory implements ServiceFactory{
@Override
public Service getService() {
return new ImplementationTwo();
}
}
public class FactoryMethodDemo {
public static void serviceConsumer(ServiceFactory sFact){
Service svc = sFact.getService();
svc.methodOne();
svc.methodTwo();
}
public static void main(String[] args){
serviceConsumer(new ImplementationOneFactory());
serviceConsumer(new ImplementationTwoFactory());
}
}
/output/
ImplementationOne’s methodOne()
ImplementationOne’s methodTwo()
ImplementationTwo’s methodOne()
ImplementationTwo’s methodTwo()

这个代码的结构,也可以使用匿名内部类来实现:

interface Service{
void methodOne();
void methodTwo();
}

interface ServiceFactory{
Service getService();
}

class ImplementationOne implements Service{

@Override
public void methodOne() {
    System.out.println("ImplementationOne methodOne()");
}

@Override
public void methodTwo() {
    System.out.println("ImplementationOne methodTwo()");
}

public static ServiceFactory factory=
        new ServiceFactory(){
        public Service getService(){
            return new ImplementationOne();
        }
};

}

class ImplementationTwo implements Service{

@Override
public void methodOne() {
    System.out.println("ImplementationTwo methodOne()");
}

@Override
public void methodTwo() {
    System.out.println("ImplementationTwo methodTwo()");
}

public static ServiceFactory factory=
        new ServiceFactory(){
        public Service getService(){
            return new ImplementationTwo();
        }
};

}

public class AnonumousInnerClassDemo {
public static void serviceConsumer(ServiceFactory fact){
Service service=fact.getService();
service.methodOne();
service.methodTwo();
}

public static void main(String[] args){
    serviceConsumer(ImplementationOne.factory);
    serviceConsumer(ImplementationTwo.factory);
}

}
/output/
ImplementationOne methodOne()
ImplementationOne methodTwo()
ImplementationTwo methodOne()
ImplementationTwo methodTwo()

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

【设计模式】简单工厂模式与工厂方法模式详细解读

1.前言     设计模式,各具特色,今天在此总结一下常见模式中 简单工厂模式与工厂方法模式的区别与联系 2.两种模式概要    1. 简单工厂模式         对于简单工厂模式的介绍,请...
  • yudandan10
  • yudandan10
  • 2013-03-10 15:09
  • 4703

抽象工厂模式(二):产品等级结构与产品族

2 产品等级结构与产品族        在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法具有唯一性,一般情况下,一个具体工厂中只有一个或者一组重载的工厂方法。...
  • Mark_LQ
  • Mark_LQ
  • 2015-04-19 20:21
  • 2927

【C# 设计模式-工厂方法模式】

在上一篇博文【C#设计模式-简单工厂模式】中,我们使用简单工厂模式实现了: 如果有一个住户管理系统,里面的住户类型是可变的,每一种租户类型的租金计算公式都存在差异 例如:A类型的住户租金额=天数*单...
  • heyangyi_19940703
  • heyangyi_19940703
  • 2016-04-19 11:40
  • 5513

工厂方法模式demo

  • 2017-01-09 16:46
  • 25.26MB
  • 下载

IOS 工厂方法模式代码Demo

  • 2014-02-21 13:49
  • 115KB
  • 下载

java 同学聚会(工厂方法模式)

  • 2010-06-21 09:08
  • 59KB
  • 下载

工厂方法模式.ppt

  • 2014-08-14 20:45
  • 318KB
  • 下载

工厂方法模式源文件

  • 2015-04-27 10:24
  • 17KB
  • 下载

C# 2048 工厂方法模式

  • 2015-09-16 20:18
  • 555KB
  • 下载

工厂方法模式

  • 2014-01-12 21:39
  • 588KB
  • 下载
    个人资料
    • 访问:35862次
    • 积分:1724
    • 等级:
    • 排名:千里之外
    • 原创:133篇
    • 转载:38篇
    • 译文:0篇
    • 评论:9条
    最新评论