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());
    }
    }
  • 相关阅读:
    Socket
    属性的使用案例
    link.bat
    未命名 (2)
    解决wordpress3.5更新插件和主题失败的问题
    解除文件锁定(此文件来自其他计算机,可能被阻止以保护该计算机)
    String转换成Integer源码分析
    实战体会Java多线程编程精要
    JAVA进阶:一个简单Thread缓冲池的实现
    Java对象的序列化和反序列化实践
  • 原文地址:https://www.cnblogs.com/yutf/p/11468452.html
Copyright © 2011-2022 走看看