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;
        }
    }
    通过继承披萨工厂抽象类可以实现个性化的披萨工厂,同时每个披萨工厂可以定义自己的披萨
     
    抽象工厂模式定义:提供一个接口,用于创建相关或者依赖对象的家族,而不需要明确指定具体类。
     
    收藏文章数量从多到少与“把书读薄”是一个道理
  • 相关阅读:
    Java MD5机密算法的使用
    JavaWeb学习总结-12 JSTL标签语言
    HTML5学习总结-09 拖放和手机触屏事件
    HTML5学习总结-08 应用缓存(Application Cache)
    HTML5学习总结-08 WebSocket 服务器推送
    软件架构阅读笔记06
    软件架构阅读笔记05
    软件架构阅读笔记04
    软件架构阅读笔记03
    软件架构阅读笔记02
  • 原文地址:https://www.cnblogs.com/use-D/p/9758040.html
Copyright © 2011-2022 走看看