美文网首页设计模式
抽象工厂模式

抽象工厂模式

作者: jsjack_wang | 来源:发表于2018-01-31 10:41 被阅读0次

    1.简介

    它提供一个接口,用于创建相关或依赖对象的家族,而不需要明确的指定具体类。
    

    2.小栗子(原料工厂)

    需求:各个地区pizza店,需要相同类型,不同风格的原料
    

    3.代码实现

    3.1 面团,各个地区的面团可能不同
    public interface Dough {    // 面团抽象类
        public abstract String getName();
    }
    
    public class SeattleDough implements Dough {    // 西雅图面团
        @Override
        public String getName() {
            return "Seattle Dough";
        }
    }
    
    public class NYDough implements Dough { // 纽约面团
        @Override
        public String getName() {
            return "NY Dough";
        }
    }
    
    3.2 酱汁,各个地区的酱汁味道可能不同
    public interface Sauce {    // 酱汁抽象类
        public abstract String getName();
    }
    
    public class SeattleSauce implements Sauce {    // 西雅图酱汁
        @Override
        public String getName() {
            return "Seattle Sauce";
        }
    }
    
    public class NYSauce implements Sauce {     // 纽约酱汁
        @Override
        public String getName() {
            return "NY Sauce";
        }
    }
    
    3.3 原料工厂
    public interface PizzaIngredientFactory {   // 原料抽象工厂
        public abstract Dough createDough();
        public abstract Sauce createSauce();
    }
    
    // 西雅图原料工厂
    public class SeattlePizzaIngredientFactory implements PizzaIngredientFactory {
        @Override
        public Dough createDough() {
            return new SeattleDough();
        }
    
        @Override
        public Sauce createSauce() {
            return new SeattleSauce();
        }
    }
    
    // 纽约原料工厂
    public class NYPizzaIngredientFactory implements PizzaIngredientFactory {
        @Override
        public Dough createDough() {
            return new NYDough();
        }
    
        @Override
        public Sauce createSauce() {
            return new NYSauce();
        }
    }
    

    4.测试

    public class AbstractFactoryDemo {
        public static void main(String[] args) {
            PizzaIngredientFactory nyFactory = new NYPizzaIngredientFactory();
            Dough nyDough = nyFactory.createDough();
            System.out.println(nyDough.getName());
    
            PizzaIngredientFactory seattleFactory = new SeattlePizzaIngredientFactory();
            Dough seattleDough = seattleFactory.createDough();
            System.out.println(seattleDough.getName());
        }
    }
    

    相关文章

      网友评论

        本文标题:抽象工厂模式

        本文链接:https://www.haomeiwen.com/subject/ijdkzxtx.html