为了账号安全,请及时绑定邮箱和手机立即绑定

工厂模式。何时使用工厂方法?

工厂模式。何时使用工厂方法?

茅侃侃 2019-08-23 14:47:11
工厂模式。何时使用工厂方法?什么时候在对象中使用工厂方法而不是Factory类是个好主意?
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

任何将对象创建推迟到其需要使用的对象的子类的类都可以看作是Factory模式的一个示例。


查看完整回答
反对 回复 2019-08-23
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

如果你想在使用方面创建一个不同的对象。它是有益的。

public class factoryMethodPattern {
      static String planName = "COMMERCIALPLAN";
      static int units = 3;
      public static void main(String args[]) {
          GetPlanFactory planFactory = new GetPlanFactory();
          Plan p = planFactory.getPlan(planName);
          System.out.print("Bill amount for " + planName + " of  " + units
                        + " units is: ");
          p.getRate();
          p.calculateBill(units);
      }}abstract class Plan {
      protected double rate;
      abstract void getRate();
      public void calculateBill(int units) {
            System.out.println(units * rate);
      }}class DomesticPlan extends Plan {
      // @override
      public void getRate() {
            rate = 3.50;
      }}class CommercialPlan extends Plan {
      // @override
      public void getRate() {
            rate = 7.50;
      }}class InstitutionalPlan extends Plan {
      // @override
      public void getRate() {
            rate = 5.50;
      }}class GetPlanFactory {
      // use getPlan method to get object of type Plan
      public Plan getPlan(String planType) {
            if (planType == null) {
                  return null;
            }
            if (planType.equalsIgnoreCase("DOMESTICPLAN")) {
                  return new DomesticPlan();
            } else if (planType.equalsIgnoreCase("COMMERCIALPLAN")) {
                  return new CommercialPlan();
            } else if (planType.equalsIgnoreCase("INSTITUTIONALPLAN")) {
                  return new InstitutionalPlan();
            }
            return null;
      }}


查看完整回答
反对 回复 2019-08-23
  • 3 回答
  • 0 关注
  • 989 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信