设计模式——装饰者模式

15 篇文章 0 订阅
8 篇文章 0 订阅

工厂方法模式

工厂方法模式: 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

设计原则:

依赖倒置原则:要依赖抽象,不要依赖具体类。

下面的指导方针,能避免在OO设计原则中违反依赖倒置原则:

变量不可以持有具体的类的引用。

不要让类派生自具体类。

不要覆盖基类中已实现的方法。

package HeadFirstDesignMode.factory;

/**
 * 描述:工厂方法模式
 * Created by zjw on 2018-12-17 22:36
 */
public class FactoryMethodTest {

    public static void main(String[] args) {
        PizzaFactory nyPizzaFactory = new NYPizzaFactory();
        nyPizzaFactory.createPizza().getPizzaName();

        PizzaFactory chicagoPizzaFactory = new ChicagoPizzaFactory();
        chicagoPizzaFactory.createPizza().getPizzaName();
    }

    interface IPizza{
        void getPizzaName();
    }

    static class NYStylePizza implements IPizza{

        @Override
        public void getPizzaName() {
            System.out.println("我是纽约风味比萨 " + this.getClass().getSimpleName());
        }
    }
    static class ChicagoStylePizza implements IPizza {

        @Override
        public void getPizzaName() {
            System.out.println("我是芝加哥风味比萨 " + this.getClass().getSimpleName());
        }
    }
    
    //抽象工厂
    static abstract class PizzaFactory {
        abstract IPizza createPizza();
    }

    //具体工厂
    static class NYPizzaFactory extends PizzaFactory {

        @Override
        IPizza createPizza() {
            return new NYStylePizza();
        }
    }
    //具体工厂
    static class ChicagoPizzaFactory extends PizzaFactory {

        @Override
        IPizza createPizza() {
            return new ChicagoStylePizza();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值