• 4、工厂模式


    工厂方法模式定义:定义了一个创建对象的接口,但由于子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类;
    “依赖倒置”原则:代码中减少了对具体类的依赖。
     
    定义披萨抽象类
    public abstract class Pizza {
        public String name;
    
        public String getName() {
            return this.name;
        }
    }
    定义披萨具体类1
    public class Pizza1 extends Pizza {
        public Pizza1(String name) {
            this.name = name;
        }
    }
    定义披萨具体类2
    public class Pizza2 extends Pizza {
        public Pizza2(String name) {
            this.name = name;
        }
    }
    定义披萨工厂抽象类
    public abstract class PizzaStore {
        public Pizza orderPizza(String type) {
            Pizza pizza;
            pizza = createPizza(type);
            return pizza;
        }
    
        public abstract Pizza createPizza(String type);
    }
    定义披萨PizzaStoreFirst工厂具体类
    public class PizzaStoreFirst extends PizzaStore {
        @Override
        public Pizza createPizza(String type) {
            Pizza pizza = null;
            if("1".equals(type)) {
                pizza = new Pizza1("Pizza name1");
            }else if ("2".equals(type)) {
                pizza = new Pizza2("Pizza name2");
            }
            return pizza;
        }
    }
    定义披萨PizzaStoreSecond工厂具体类
    public class PizzaStoreSecond extends PizzaStore {
        @Override
        public Pizza createPizza(String type) {
            Pizza pizza = null;
            if("3".equals(type)) {
                pizza = new Pizza1("Pizza name3");
            }else if ("4".equals(type)) {
                pizza = new Pizza2("Pizza name4");
            }
            return pizza;
        }
    }
    通过继承披萨工厂抽象类可以实现个性化的披萨工厂,同时每个披萨工厂可以定义自己的披萨
     
    抽象工厂模式定义:提供一个接口,用于创建相关或者依赖对象的家族,而不需要明确指定具体类。
     
    收藏文章数量从多到少与“把书读薄”是一个道理
  • 相关阅读:
    [Luogu P2563]质数和分解
    数据处理、降维--线性判别分析(linear discriminant analysis LDA)
    endnote导入参考文献及国标(Chinese standard)
    朴素贝叶斯分类器
    R语言--apply家族
    R语言--解决4*x+y之奇技淫巧、重复数字去重
    R语言中级--自定义方程
    R语言--一整套数据处理流程及简单的控制流
    R语言图形初阶
    R基础、进阶-矩阵数据框的操作
  • 原文地址:https://www.cnblogs.com/use-D/p/9758040.html
Copyright © 2020-2023  润新知