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));
        }

    三、抽象工厂

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

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

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

  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/blogofjzq/p/9453947.html
Copyright © 2011-2022 走看看