工厂方法模式

工厂方法模式概述
    工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现

简单理解:

  与简单工厂模式类似,简单工厂模式是一个工厂,用户将条件为构造传入工厂,逻辑判断在工厂内,工厂只是一个创建对应的子类,然后利用泛型操作。

  工厂模式:不同工厂创建不同子类,抽象出一个工厂接口,使用哪一种工厂由用户自己选择。
    
优点:
    客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体
    的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性
    
缺点:
    需要额外的编写代码,增加了工作量

package com.factory;

public interface Animal {
public void eat();
}
package com.factory; public class Dog implements Animal { @Override
public void eat() {
System.out.println("狗吃肉");
} }
package com.factory; public class Cat implements Animal { @Override
public void eat() {
System.out.println("猫吃鱼");
} }
package com.factory; public interface Factory {
public Animal createAnimal();
}
package com.factory; public class CatFactory implements Factory { @Override
public Animal createAnimal() {
return new Cat();
} }
package com.factory; public class DogFactory implements Factory { @Override
public Animal createAnimal() {
return new Dog();
} }
package com.factory; public class AnimalDemo {
public static void main(String[] args) {
//买一只狗
//建狗厂
Factory f=new DogFactory();
Animal d=f.createAnimal();
d.eat();
Factory f1=new CatFactory();
Animal c=f1.createAnimal();
c.eat();
}
}

factory工厂模式的更多相关文章

  1. C++设计模式-Factory工厂模式

    Factory1.定义创建对象的接口,封装对象的创建2.将实际创建工作延迟到子类中,例如,类A中药使用类B,B是抽象父类,但是在类A中不知道具体要实例化哪一个B的子类,但是在类A的子类D中是可以知道的 ...

  2. factory工厂模式之简单工厂SimpleFactory

    简单工厂(Simple Factory) 又叫静态工厂,是工厂模式三中状态中结构最为简单的.1.主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例.2.或者针对每个产品, ...

  3. 设计模式(三): FACTORY工厂模式 -- 创建型模式

    1.定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类. 2.适用场景 1.第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体 ...

  4. 设计模式之Factory工厂模式的好处

    最最直观的好处就是吹牛逼,看着要比普通创建对象要屌 好看 一般情况下,我们创建对象使用的是new. Sample sample=new Sample(); 然而,实际情况会比这样复杂的多,比如说 Sa ...

  5. Factory - 工厂模式

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  6. 设计模式之Factory工厂模式

    在上一章,模板模式中,我们在父类规定处理的流程,在子类中实现具体的处理.如果我们将该模式用于生成实例,便演变成了Factory模式,即工厂模式. 在Factory模式中,父类决定实例的生成方式,但并不 ...

  7. factory工厂模式之抽象工厂AbstractFactory

    * 抽象工厂: 意图在于创建一系列互相关联或互相依赖的对象. * 每个工厂都会创建一个或多个一系列的产品 * 适用于:产品不会变动,开始时所有产品都创建好,然后根据分类获取想要的 某一类产品(很像sp ...

  8. factory工厂模式之工厂方法FactoryMethod

    工厂方法(Factory Method) * 工厂方法把不同的产品放在实现了工厂接口的不同工厂类(FactoryAImpl,FactoryBImpl...)里面, * 这样就算其中一个工厂类出了问题, ...

  9. 常用的JavaScript设计模式(二)Factory(工厂)模式

    Factory通过提供一个通用的接口来创建对象,同时,我们还可以指定我们想要创建的对象实例的类型. 假设现在有一个汽车工厂VehicleFactory,支持创建Car和Truck类型的对象实例,现在需 ...

随机推荐

  1. DevExpress TreeList 那些事儿

    1:TreeList绑定数据源 当我们给予TreeList 的 parentFieldName 和 KeyFieldName 两个属性之后 会自动的生成树结构. 1 var sql = @" ...

  2. Linux网络编程2——系统函数

    socket信息数据结构 #include <netinet/in.h> struct sockaddr { unsigned short sa_family; /*地址族*/ ]; /* ...

  3. 求一个全排列函数: 如p([1,2,3])输出:[123],[132],[213],[231],[312],[321]. 求一个组合函数 如p([1,2,3])输出:[1],[2],[3],[1,2],[2,3],[1,3],[1,2,3]

    深度搜索的代码: #include<stdio.h> #include<string.h> ; int n; int a[Max]; bool b[Max]; void Dfs ...

  4. android中使用html作布局文件

    在android开发中,通常使用xml格式来描述布局文件.就目前而言,熟悉android布局及美化的人员少之又少,出现了严重的断层.大部分企业,其实还是程序员自己动手布局.这样既浪费时间和精力,也未必 ...

  5. linux 打开文件数 too many open files 解决方法

    linux 打开文件数 too many open files 解决方法 too many open files 出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值. 查看每个用户 ...

  6. chrome开发配置(二)获取源代码

    1.下载源代码,这里使用最简单的下载,chrome打包好的共享在百度云盘,点击下载 2.建议下载7z压缩工具解压压缩包,大概1个多小时. 3.至于以后怎么更新到最新版不能,等编译生成成功了,我们再具体 ...

  7. 把properties放到src的package中

    eclipse在buildporject的时候会自动将properties文件拷贝到/build下的相应的package中

  8. Friends(老友记)(六人行)相关资源

    迅雷账号:104303980 老友记 Friends 的所有种子: http://www.ttmeiju.com/meiju/Friends.html 老友记(friends)高清(720p)+字幕 ...

  9. HDU 4648 Magic Pen 6 思路

    官方题解: 题意转化一下就是: 给出一列数a[1]...a[n],求长度最长的一段连续的数,使得这些数的和能被M整除. 分析: 设这列数前i项和为s[i], 则一段连续的数的和 a[i]+a[i+1] ...

  10. 加密解密(5)SSL形象比喻

    转自: http://blog.csdn.net/cloverphp/article/details/11737433 前言: 关于公钥,私钥请看前几篇文章   SSL 协议既用到了公钥加密技术(握手 ...