0
点赞
收藏
分享

微信扫一扫

java设计模式二之工厂方法设计模式


前言:

工厂方法模式也属于类的创建模式,也被称为多态工厂模式,它与简单工厂模式的不同是,工厂定义为抽象的,工厂的每个子类负责创建具体的实体类。这样的好处是,增加新的实体,只需要增加相应的工厂就可以了,不需要修改原工厂代码。


怎么实现:

1、需要实体类:要被创建的类

2、被创建的类的共同父类:多态的体现,负责所有实例的公共接口,在工厂类中接受实体对象

3、抽象工厂类:所有工厂类的父类

4、工厂类:创建实体类,继承抽象工厂类,多态的体现


代码:

水果类父类:

package com.xhx.designpattern;

public interface Fruit {
/**
* 水果
*/
void get();
}


苹果类:

package com.xhx.designpattern;

public class Apple implements Fruit{
public void get(){
System.out.println("我是苹果");
}
}


香蕉类:

package com.xhx.designpattern;

public class Banana implements Fruit{
public void get(){
System.out.println("我是香蕉");
}
}


工厂类父类:

package com.xhx.designpattern;

public interface FruitFactory {
Fruit getFruit();
}


苹果工厂:

package com.xhx.designpattern;

public class AppleFactory implements FruitFactory {
@Override
public Fruit getFruit() {
return new Apple();
}
}

香蕉工厂:

package com.xhx.designpattern;

public class BananaFactory implements FruitFactory {
@Override
public Fruit getFruit() {
return new Banana();
}
}


启动测试类:

package com.xhx.designpattern;


public class App
{
/**
* 简单工厂模式,增加新类一般都需要修改原来的工厂
* 工厂方法模式把工厂定义为接口,增加新类同样增加具体工厂类
* @param args
*/
public static void main( String[] args )
{
//获得AppleFactory
FruitFactory fruitFactory = new AppleFactory();
Fruit apple = fruitFactory.getFruit();
apple.get();

//获得BananaFactory
FruitFactory fruitFactory1 = new BananaFactory();
Fruit banana = fruitFactory1.getFruit();
banana.get();
}
}



增加新类:

package com.xhx.designpattern;

public class Pear implements Fruit {
@Override
public void get() {
System.out.println("我是梨子");
}
}

增加新类工厂:

package com.xhx.designpattern;

public class PearFactory implements FruitFactory {
@Override
public Fruit getFruit() {
return new Pear();
}
}


举报

相关推荐

0 条评论