设计模式--简单工厂模式
2017-07-07 10:57
169 查看
面对可能的变化,通过创建工厂来创建不同的对象来实现很多功能的切换,不用在业务代码中切换。
1
接口:
两个实现类
对象工厂创建指定类型的对对象来切换不同的功能:
测试
通过简单工厂模式,通过实现接口,创建一个工厂类中的对应的方法,返回不同接口的实现类的对象,调用处接口引用指向不同的实现类的对象,从而实现调用者和对象创建过程的分离,实现解耦,而使用接口的意义在于,当系统重构时,因为均继承一个接口,产生的对象均可被指向。
参考:李刚《疯狂java讲义》第三版。
2 参考《大话设计模式》。在一的基础上引入的抽象类,对于抽象与接口的理解又更深了。
整体架构图:
接口:
抽象类:
四个实现类:
测试:
1
接口:
public interface Output { public void print(); }
两个实现类
public class OutputImpl implements Output{ @Override public void print() { System.out.println("OutputImpl->print"); } }
public class BetterOutputImpl implements Output { @Override public void print() { System.out.println("BetterOutputImpl-->Output"); } }
对象工厂创建指定类型的对对象来切换不同的功能:
public class SimpleFactory { public static Output getOutputInstance(String type) { if ("BetterOutputImpl".equals(type)) { return new BetterOutputImpl(); } else { return new OutputImpl(); } } }
测试
public class TextMain { private Output output; public TextMain(Output output) { this.output = output; } public void print(){ output.print(); } public static void main(String[] args) { Output output=SimpleFactory.getOutputInstance("BetterOutputImpl"); TextMain textMain=new TextMain(output); textMain.print(); } }
通过简单工厂模式,通过实现接口,创建一个工厂类中的对应的方法,返回不同接口的实现类的对象,调用处接口引用指向不同的实现类的对象,从而实现调用者和对象创建过程的分离,实现解耦,而使用接口的意义在于,当系统重构时,因为均继承一个接口,产生的对象均可被指向。
参考:李刚《疯狂java讲义》第三版。
2 参考《大话设计模式》。在一的基础上引入的抽象类,对于抽象与接口的理解又更深了。
整体架构图:
接口:
public interface Operation { public Integer getResult(); }
抽象类:
public abstract class AbstractOperation implements Operation{ public Integer numberA=0; public Integer numberB=0; public abstract Integer getResult(); //省略get set方法 }
四个实现类:
public class OperationAdd extends AbstractOperation{ public Integer getResult(){ return numberA+numberB; } } public class OperationDiv extends AbstractOperation { @Override public Integer getResult() { // TODO Auto-generated method stub return numberA/numberB; } } public class OperationMul extends AbstractOperation { @Override public Integer getResult() { // TODO Auto-generated method stub return numberA*numberB; } } public class OperationSub extends AbstractOperation { @Override public Integer getResult() { // TODO Auto-generated method stub return numberA-numberB; } }
测试:
public static void main(String[] args) { // TODO Auto-generated method stub AbstractOperation operation=OperationFactory.createOperation("+"); operation.setNumberA(1); operation.setNumberB(2); System.out.println(operation.getResult()); }
相关文章推荐
- C#设计模式学习笔记---简单工厂模式
- C#设计模式之简单工厂篇
- 用 Delphi 学设计模式 之 简单工厂篇- -
- 设计模式 之 简单工厂
- JAVA设计模式——简单工厂(Simple Factory)模式
- .NET设计模式(1): 简单工厂模式
- C#设计模式之简单工厂篇
- 设计模式之-简单工厂、工厂方法、抽象工厂
- C#设计模式之简单工厂篇
- 第一个设计模式:简单工厂
- 最简单的工厂设计模式 Factory
- [导入]C#设计模式之简单工厂篇
- C#设计模式之简单工厂
- 简单工厂设计模式-设计模式(1)
- 设计模式之Factory1(简单工厂,工厂方法,抽象工厂的比较)
- C#设计模式之简单工厂篇
- C#设计模式之简单工厂篇
- Dot Net 设计模式—简单工厂
- 简单工厂设计模式
- 设计模式-工厂模式-简单工厂