zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    通过继承披萨工厂抽象类可以实现个性化的披萨工厂,同时每个披萨工厂可以定义自己的披萨
     
    抽象工厂模式定义:提供一个接口,用于创建相关或者依赖对象的家族,而不需要明确指定具体类。
     
    收藏文章数量从多到少与“把书读薄”是一个道理
  • 相关阅读:
    CentOS 6.5下快速搭建ftp服务器
    Ubuntu增加swap交换空间的步骤
    mysql官方下载安装教程(centos)
    阿里云上遇到: virtual memory exhausted: Cannot allocate memory
    解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
    centos安装nodejs和配置npm
    JavaScript(二)-精简
    JavaScript(一)
    ease,seae-in,ease-in-out,ease-out区别
    安装 sass 文档
  • 原文地址:https://www.cnblogs.com/use-D/p/9758040.html
Copyright © 2011-2022 走看看