工厂方法模式

x33g5p2x  于2022-03-08 转载在 其他  
字(0.9k)|赞(0)|评价(0)|浏览(280)

1.概念

工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪个类,工厂方法使一个类的实例化延迟到其子类

2.简单案例

1.api接口

  1. package com.yl.design;
  2. public interface FruitApi {
  3. public void eat();
  4. }
  1. package com.yl.design;
  2. public class AppleApi implements FruitApi {
  3. @Override
  4. public void eat() {
  5. System.out.println("eat apple...");
  6. }
  7. }
  1. package com.yl.design;
  2. public class PeachApi implements FruitApi {
  3. @Override
  4. public void eat() {
  5. System.out.println("eat peach...");
  6. }
  7. }

2.抽象类

  1. package com.yl.design;
  2. public abstract class Fruit {
  3. protected abstract FruitApi factoryMethod();
  4. public void eat() {
  5. FruitApi fruitApi = factoryMethod();
  6. fruitApi.eat();
  7. }
  8. }

3.抽象类的子类

  1. package com.yl.design;
  2. public class AppleObj extends Fruit {
  3. @Override
  4. protected FruitApi factoryMethod() {
  5. return new AppleApi();
  6. }
  7. }
  1. package com.yl.design;
  2. public class PeachObj extends Fruit {
  3. @Override
  4. protected FruitApi factoryMethod() {
  5. return new PeachApi();
  6. }
  7. }

4.测试

  1. package com.yl.design;
  2. public class Test {
  3. public static void main(String[] args) {
  4. Fruit fruit = new AppleObj();
  5. fruit.eat();
  6. }
  7. }

相关文章