设计模式之抽象工厂模式

来源:互联网 发布:安卓手机长截图软件 编辑:程序博客网 时间:2024/06/03 12:42

普通工厂模式下比较重度依赖工厂类,如果想拓展功能则必须对工厂类进行修改,则抽象工厂应运而生,该模式下新建多个工厂类,这样一旦增加功能则只需要增加新的工厂类就ok了,代码如下

package com.demo.stragetry;import org.apache.hadoop.classification.InterfaceAudience.Public;import com.sun.corba.se.spi.orb.OperationFactory;import com.weibo.stragetry.multifacory.Sender;public class FactoryTest {    static interface Operation{        public void calculate();    }    public interface Provider{        public Operation produce();    }    public static class AddOperation implements Operation{        @Override        public void calculate() {            // TODO Auto-generated method stub            System.out.println("add operation");        }    }    public static class SubOperation implements Operation{        @Override        public void calculate() {            // TODO Auto-generated method stub            System.out.println("sub operation");        }    }    public static class MulOperation implements Operation{        @Override        public void calculate() {            // TODO Auto-generated method stub            System.out.println("mul operation");        }    }    public static class DivOperation implements Operation{        @Override        public void calculate() {            // TODO Auto-generated method stub            System.out.println("div operation");        }    }    public static class FaltOperation implements Operation{        @Override        public void calculate() {            // TODO Auto-generated method stub            System.out.println("Falt operation");        }    }    public static class AddFactory implements Provider{        @Override        public Operation produce() {            // TODO Auto-generated method stub            return new AddOperation();        }    }    public static class SubFactory implements Provider{        @Override        public Operation produce() {            // TODO Auto-generated method stub            return new SubOperation();        }    }    public static class MulFactory implements Provider{        @Override        public Operation produce() {            // TODO Auto-generated method stub            return new MulOperation();        }    }    public static class DivFactory implements Provider{        @Override        public Operation produce() {            // TODO Auto-generated method stub            return new DivOperation();        }    }    public static void main(String[] args) {        Provider provider = new AddFactory();        Operation operation = provider.produce();        operation.calculate();    }}
原创粉丝点击