java设计模式-(一)工厂模式
来源:互联网 发布:计生委招聘 知乎 编辑:程序博客网 时间:2024/05/17 09:39
java设计模式-(一)工厂模式
简单工厂模式
一个专门用来创建其他类的模式,也叫做静态工厂模式,因为这种方式的获取方法都是静态的,使用时候无需new处对象。
public interface Animal { void sound();}
这里定义一个Animal接口来实现animal的基本方法。
public class Pig implements Animal{ //实现animal接口 @Override public void sound() { System.out.print("Hi,I am a Pig From Factory"); }}public class Dog implements Animal { @Override public void sound() { System.out.print("Hi,I am a Dog From Factory"); }}
这里实现了Animal接口
public class AnimalFactory { public Animal getAnimal(String name){ if(name.equals("pig")){ return new Pig(); } else if(name.equals("dog")){ return new Dog(); } return null; }}
这里通过AnimalFactory 根据不同的字段进行返回不同的类。
这里一旦通过输入的字符串进行查询,如果输入的字符串错误则会出现返回空的情况,同时不利于维护,一旦有新的类加入,就需要对工厂类进行修改,但是其将类的创建和工作分开,提高了系统的灵活性。而且使用这种方式无法创造出基于继承的结构。
抽象工厂方法模式
将工厂分开的方式,一个工厂专门的生产一种类,上面的工厂如果添加了产品,需要对工厂进行修改,这里通过实现具体的类和工厂的方法,如果需要具体的类直接就可以添加具体的类和工厂。
public interface Animal { void sound();}public interface Factory { Animal created();}
定义两个接口,animal和factory
public class DogFactory implements Factory{ @Override public Animal created() { return new Dog(); }}public class PigFactor implements Factory { @Override public Animal created() { return new Pig(); }}
两个工厂
测试代码
public void test(){ Factory factory=null; factory=new DogFactory(); factory.created().sound(); factory=new PigFactor(); factory.created().sound(); }
这种方式将工厂和具体的产品进行了整合,这也避免了错误 的发生,同时对于需要添加的功能可以直接通过编写具体的类实现,但是过于繁杂,每一次的添加都需要添加产品和工厂类。
阅读全文
0 0
- Java设计模式:工厂模式(一)简单工厂模式
- java设计模式(一)---工厂模式
- Java设计模式----工厂模式(一)
- Java设计模式(一):工厂模式
- java设计模式-(一)工厂模式
- Java设计模式之工厂模式(一):简单工厂模式+工厂方法模式
- JAVA--简单工厂模式,工厂方法模式--设计模式一
- java设计模式一 简单工厂模式
- Java设计模式《一》简单工厂模式
- JAVA设计模式(一)----工厂模式
- java设计模式 一 工厂模式
- Java设计模式(一) 设计模式初探——简单工厂和工厂方法模式
- java设计模式(一)--工厂模式(Factory Method)
- java中的设计模式(一)--简单工厂模式
- Java常用设计模式详解(一)---工厂模式
- java设计模式学习(一)-工厂方法模式1
- java设计模式学习(一)-工厂方法模式2
- JAVA设计模式之工厂模式 简单讲解(一)
- 刘汝佳--WERTY
- TensorFlows识别石榴图片
- mycat2.0配置文件datasource.yml参数说明
- 网站多维度指标分析
- 面向对象基础(二)
- java设计模式-(一)工厂模式
- 实验三:内部模块化的命令行菜单小程序V2.0
- zuul配置
- Face The Right Way
- linux/ubuntu下IPython、IPython Notebook(jupyter)的安装和基本使用
- JAVA程序初始化的顺序是怎么样的
- Lintcode奇偶分割数组
- 全局修改默认字体,通过反射也能做到
- Struts1工作原理