0
点赞
收藏
分享

微信扫一扫

C# WPF自制批注工具(方便标记重点和演示)

是她丫 2024-07-24 阅读 27

一、模式介绍

在工厂方法模式中,不再使用简单工厂方法模式中那个静态工厂方法,而是为每一种要生产的产品配备一个工厂,
每种工厂只生成一种特定产品,这样以后增加新产品时,直接新增对应的工厂就可以了,而不用修改原有的工厂。

二、工厂方法模式

1、实现步骤

第一步:定义产品抽象类。比如鞋子(Shoes.class
// 1、定义鞋 产品抽象基类
abstract class Shoes {
    // 展示logo
    public abstract void showLogo();
}

第二步:定义具体产品类,继承产品抽象类。比如飞跃牌鞋子(FeiYueShoes.class)、回力牌鞋子(HuiLiShoes.class)
//2.定义具体品牌的鞋类,继承鞋抽象基类
public class HuiLiShoes extends Shoes {
    @Override
    public void showLogo() {
        System.out.println("这是回力鞋");
    }
}
//2.定义具体品牌的鞋类,继承鞋抽象基类
public class FeiYueShoes extends Shoes {

    @Override
    public void showLogo() {
        System.out.println("这是飞跃鞋");
    }
}

第三步:定义工厂类接口方法。比如鞋子工厂(ShoesFactory.class)
//3.定义工厂类接口
interface ShoesFactory {
    public abstract Shoes produceShoes();
}

第四步:定义具体产品工厂类,实现工厂类接口。比如飞跃牌鞋子工厂(FeiYueShoesFactory.class)、回力牌鞋子工厂(HuiLiShoesFactory.class)
//4.定义生产具体产品工厂类,如生成回力鞋的工厂
public class HuiLiShoesFactory implements ShoesFactory {
    @Override
    public Shoes produceShoes() {
        return new HuiLiShoes();
    }
}
//4.定义生产具体产品工厂类,如生成飞跃鞋的工厂
public class FeiYueShoesFactory implements ShoesFactory {
    @Override
    public Shoes produceShoes() {
        return new FeiYueShoes();
    }
}

第五步:使用工厂方法模式,生成产品。比如(FactoryMethodExample.class)
// 工厂方法模式
public class FactoryMethodExample {
    public static void main(String[] args) {
        //生成飞跃鞋
        FeiYueShoesFactory feiYueShoesFactory = new FeiYueShoesFactory();
        feiYueShoesFactory.produceShoes().showLogo();

        //生成回力鞋
        HuiLiShoesFactory huiLiShoesFactory = new HuiLiShoesFactory();
        huiLiShoesFactory.produceShoes().showLogo();

        //如果新增鞋子品牌,生成对应具体产品类,具体产品工厂类,比如老北京布鞋
  //      LaoBeiJIngShoesFactory laoBeiJIngShoesFactory = new LaoBeiJIngShoesFactory();
  //      laoBeiJIngShoesFactory.produceShoes().showLogo();

    }
}

2、总结

    和简单工厂模式相比,工厂方法模式中,工厂类取代了简单工厂模式中的静态方法,如果需要扩展,比如要生产老北京布鞋
        第一步:定义具体产品类,继承产品抽象类。比如老北京布鞋(LaoBeiJIngShoes.class)
        第二步:定义具体产品工厂类,实现工厂类接口方法。比如老北京布鞋工厂(LaoBeiJIngShoesFactory.class)
        第三步:使用工厂方法模式,生成产品。比如(FactoryMethodExample.class)
    通过工厂方法模式,新在增加一种产品的时候就只要扩展两个类,符合开闭原则。解决了简单工厂模式存在的问题。
public class LaoBeiJIngShoes extends Shoes {
    @Override
    public void showLogo() {
        System.out.println("这是老北京布鞋");
    }
}
public class LaoBeiJIngShoesFactory implements ShoesFactory {
    @Override
    public Shoes produceShoes() {
        return new LaoBeiJIngShoes();
    }
}

缺点

    工厂方法模式每增加一种产品就要相应的增加一个工厂类,比较繁琐。而且每个工厂只能生成一种产品,
    无法生成其他产品,比如飞跃T恤,比较浪费。
举报

相关推荐

0 条评论