• head first 设计模式笔记4-工厂模式(简单工厂、工厂方法、抽象工厂)


    1、简单工厂模式

       Pizza

    public abstract class Pizza {
        abstract void prepare();
        abstract void bake();
        abstract void cut();
        abstract void box();
    }

      

      CheesePizza

    public class CheesePizza extends Pizza {
    
        @Override
        void prepare() {
        }
    
        @Override
        void bake() {
        }
    
        @Override
        void cut() {
        }
    
        @Override
        void box() {
        }
    }

      简单工厂:SimplePizzaFactory

    /**
     * 简单工厂
     * @author oy
     * @date 2019年9月1日 下午10:49:55
     * @version 1.0.0
     */
    public class SimplePizzaFactory {
    
        public Pizza createPizza(String type) {
            Pizza pizza = null;
            if ("cheese".equals(type)) {
                pizza = new CheesePizza();
            } else if ("pepperoni".equals(type)) {
                pizza = new PepperoniPizza();
            }
            return pizza;
        }
    }

      客户:使用工厂生产的对象

    public class PizzaStore {
        SimplePizzaFactory factory;
        public PizzaStore(SimplePizzaFactory factory) {
            this.factory = factory;
        }
        
        public Pizza orderPizza(String type) {
            Pizza pizza = factory.createPizza(type);
            
            pizza.prepare();
            pizza.bake();
            pizza.cut();
            pizza.box();
            
            return pizza;
        }
    }

    2、工厂方法模式

      工厂方法模式:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类

      Animal

    public abstract class Animal {
        public abstract void eat();
    }

      Animal实现类

    public class Cat extends Animal {
        @Override
        public void eat() {
            System.out.println("猫吃鱼");
        }
    }
    public class Dog extends Animal {
        @Override
        public void eat() {
            System.out.println("狗吃肉");
        }
    }

      工厂类

    public interface Factory {
        public abstract Animal createAnimal();
    }
    public class CatFactory implements Factory {
        @Override
        public Animal createAnimal() {
            return new Cat();
        }
    }
    public class DogFactory implements Factory {
        @Override
        public Animal createAnimal() {
            return new Dog();
        }
    }

      测试代码

    public static void main(String[] args) {
        // 需求:我要买只狗
        Factory f = new DogFactory();
        Animal a = f.createAnimal();
        a.eat();
        System.out.println("-------");
        
        //需求:我要买只猫
        f = new CatFactory();
        a = f.createAnimal();
        a.eat();
    }

    3、抽象工厂模式

      参考:简单工厂模式、工厂模式以及抽象工厂模式

  • 相关阅读:
    CSDN文章列表的CSS实现
    Arcgis for Js之鼠标经过显示对象名的实现
    Java ssh 访问windows/Linux
    HTTP长连接实现“服务器推”的技术
    Eclipse设置、调优、使用
    Quartz的配置文件quartz.properties详解
    Quartz所使用的表的说明
    Quartz动态添加、修改和删除定时任务
    Quartz的misfire特性
    项目中使用Quartz集群分享--转载
  • 原文地址:https://www.cnblogs.com/xy-ouyang/p/11444306.html
Copyright © 2020-2023  润新知