zoukankan      html  css  js  c++  java
  • 设计模式三、工厂方法模式

    上篇讲述了简单工厂模式,本篇介绍一下工厂方法模式设计

    上篇文章讲述简单工厂模式会通过一个统一工厂管理所有对象的创建,文末也说明了这种设计方式是不符合单一职能原则和开闭原则的,

    工厂方法模式解决了简单工厂模式所面临的问题

    工厂方法针对每个对象创建对应的工厂,每个对象的创建都通过自己的工厂进行管理,这样就符合了单一职能原则,

    每次新增对象也会创建新的工厂去管理,而不是修改原油对象进行兼容,这样就符合了拓展开放,修改关闭的开闭原则。

    下面就给出工厂方法的示例(应用了部分上节课对象)

     工厂接口

    public interface FruitsFactory {
        Fruits  getFruits();
    }

    苹果工厂

    public class AppleFactory implements FruitsFactory {
        @Override
        public Fruits getFruits() {
            return new Apple();
        }
    }

    橘子工厂

    public class OrangeFactory  implements FruitsFactory{
        @Override
        public Fruits getFruits() {
            return new Orange();
        }
    }

    工厂的使用

    public class FruitsController {
    
        public static void main(String[] args) {
            //苹果
            AppleFactory appleFactory=new AppleFactory();
           Fruits apple=appleFactory.getFruits();
            System.out.println(apple.getName());
            //橘子
            OrangeFactory orangeFactory=new OrangeFactory();
           Fruits orange=orangeFactory.getFruits();
            System.out.println(orange.getName());
        }
    }
    public class FruitsController {

    public static void main(String[] args) {
    //苹果
    AppleFactory appleFactory=new AppleFactory();
    Fruits apple=appleFactory.getFruits();
    System.out.println(apple.getName());
    //橘子
    OrangeFactory orangeFactory=new OrangeFactory();
    Fruits orange=orangeFactory.getFruits();
    System.out.println(orange.getName());
    }
    }
  • 相关阅读:
    Ubuntu 18.04 初始化(server版本 )
    named主从环境部署
    CentOS 源码安装svn
    端口状态
    进程状态
    top命令详解
    gitlab部署
    day16
    day15
    day14
  • 原文地址:https://www.cnblogs.com/yutf/p/11468452.html
Copyright © 2011-2022 走看看