zoukankan      html  css  js  c++  java
  • 工厂模式

    一、简单工厂模式

    在我看来该模式的本质就是通过工厂的选择进行对象的创建

    先写一个接口

    public interface operation {
        int getResult(int a,int b);
    }

    写两个实现类

    public class operationAdd implements operation{
        public int getResult(int a, int b) {
            return a+b;
        }
    }
    public class operationSub implements operation{
        public int getResult(int a, int b) {
            return a-b;
        }
    }

    写工厂

    public class operationFactory {
        public static operation getOperation(String op)
        {
            if(op.equals("+"))
            {
                return new operationAdd();
            }
            else if(op.equals("-"))
            {
                return new operationSub();
            }
            return null;
        }
    }

    最后测试

    public static void main(String[] args) {
            System.out.println(operationFactory.getOperation("+").getResult(2, 3));
            System.out.println(operationFactory.getOperation("-").getResult(2, 3));
        }

    二、工厂方法模式

    将工厂类抽象,让他的每一个实现对应一个具体创建的操作

    public interface operationFactory {
        public operation getOperation();
    }
    public class addFactory implements operationFactory{
        public operation getOperation() {
            return new operationSub();
        }
    }
    public class subFactory implements operationFactory{
        public operation getOperation() {
            return new operationAdd();
        }
    }

    测试

    public static void main(String[] args) {
            operationFactory of=new addFactory();
            System.out.println(of.getOperation().getResult(2, 5));
        }

    三、抽象工厂

    抽象工厂就是把一类相关性高的抽象为一个接口,

    比如上面的加法减法可以抽象成一个基本运算工厂。只是在上面两个的情况下进行了更详细的划分。

    最后,工厂模式和反射可以很好的结合在一起。

  • 相关阅读:
    Codeforces Round #261 (Div. 2) D
    数据类型总结之列表字典
    while +for+字符串
    20150304+JQuery+AJax+插件-02
    20150304+JQuery+AJax+插件-01
    20150303+JQuery选择器-02
    20150303+JQuery选择器-01
    20150302+JQuery-02
    20150302+JQuery-01
    20150228--Ajax2-02
  • 原文地址:https://www.cnblogs.com/blogofjzq/p/9453947.html
Copyright © 2011-2022 走看看