• 工厂方法模式


    1、 概述
    工厂方法模式中  抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现

    2、 优缺点

    优点
           客户端不需要在负责对象的创建,从而明确了各个类的职责;

          如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,

         不影响已有的代码,后期维护容易,增强了系统的扩展性

    缺点
    需要额外的编写代码,增加了工作量


    代码:

    Animal 动物抽象类

    // 动物抽象类
    public abstract class Animal {
    
        public abstract void eat();    // 吃 的 功能
    }

    Dog 类

    // 狗类 
    public class Dog extends Animal {
    
        @Override
        public void eat() {
            System.out.println("笨狗吃骨头...");
    
        }
    
    }

    Rabbit 类

    // 兔类
    public class Rabbit extends Animal {
    
        @Override
        public void eat() {
            System.out.println("兔子爱吃隔壁草...");
        }
    
    }

    Factory 工厂接口 (造动物) 

    // 工厂接口
    public interface Factory {
        
        public Animal createAnimal();   // 创造动物的功能
        
    
    }
     DogFactory 狗工厂
    // 狗工厂
    public class DogFactory implements Factory {
    
        @Override
        public Animal createAnimal() {
            
            return new Dog();
        }
    
    }
     RabbitFactory  兔子工厂
    // 兔子工厂
    public class RabbitFactory implements Factory {
    
        @Override
        public Animal createAnimal() {
            return new Rabbit();
        }
    
    }

    测试类

    public class Test {
    
        public static void main(String[] args) {
            
            // 需求: 买狗
            Factory f = new DogFactory();
            Animal a = f.createAnimal();
            a.eat();
            
            // 需求:买兔子
            f = new RabbitFactory();
            a = f.createAnimal();
            a.eat();
    
        }
    
    }

    结果:

    笨狗吃骨头...
    兔子爱吃隔壁草...
  • 相关阅读:
    Php7安装pdo_pgsql,pgsql扩展
    Laravel 实时监听打印 SQL
    windows 下安装docker依赖boot2docker镜像默认用户和密码
    win7下安装virtual box后启动报错
    phpstorm 不能自动打开上次的历史文件
    BZOJ1001 [BeiJing2006]狼抓兔子 平面图转对偶图,最小割转最短路
    BZOJ1098 [POI2007]办公楼biu
    POJ1410 Intersection
    HDU3336 Count the string
    HDU2594 Simpsons’ Hidden Talents [KMP]
  • 原文地址:https://www.cnblogs.com/penguin1024/p/11808471.html
Copyright © 2020-2023  润新知