在以前的文章里面讲述过简单工厂模式,见链接:http://www.cnblogs.com/zhuxiansheng/p/7873161.html简单工厂模式解耦了客户端和实现的依赖,不过如果有再次扩展实现的话,我们不得不去修改工厂当中的选择分支,来添加case,然后添加新的实现,这违背了开放-关闭原则。如何解决这个问题,工厂模式给了很好的解答。大话设计模式-类图大话设计模式中的例子代码如下:/*** 工厂接口*/publicinterface IFactory {public LeiFeng creat...
将类的创建任务委托给工厂,包含具体创建哪个类的信息作为参数(通常为String)提交给简单工厂 优缺点:1.
工厂模式含有必要的判断逻辑,可以决定在什么时候创建哪一个产品的实例,客户端可以免除直接创建产品的责任,而仅仅需要消费产品。简单工厂通过这种做法实现了责任的分割。缺点:1.系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,违反了设计模式中针对扩展开放,对修改关闭的原则。2. 简单工厂模式通常使用静态工厂方...
一、简单工厂模式简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类 实现汽车接口1publicinterface Car {
2 String getName();
3 } 奔驰类1publicclass Benz implements Car {
2 @Override
3public String getName() {
4return "Benz";
5 }
6 } 宝马类1publicclass BMW implements Car {
2 @Override
3public String getName() {
4return "BM...
介绍
与创建型模式类似,工厂模式创建对象(视为工厂里的产品)时无需指定创建对象的具体类。
工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型。
这个模式十分有用,尤其是创建对象的流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类类定义需要创建的对象类型。
...
昨天看了一下设计模式,复习了一下简单工厂模式,做个笔记,浅淡一下我对简单工厂模式的理解。书上使用的是C#,因为我所学的是Java,所以本人就用Java实现了一遍。如果有讲的不对的地方,希望能够指出来。简单工厂设计模式可以简单地理解为,你拿着一个空口袋去水果店买水果,你把空袋子给水果店老板,然后对老板讲我需要一袋子的柚子,十分钟以后。老板递给你一袋子柚子。你不需要知道他们是怎么区分柚子和橘子,又是怎么把柚子装...
抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。 产品族 是指位于不同产品等级结构中,功能相关联的产品组成的家族。一般是位于不同的等级结构中的相同位置上。显然,每一个产品族中含有产品的数目,与产品等级结构的数目是相等的...
看了几次抽象工厂模式,每次查看都需要重新理解一次,可能是涉及的类和接口比较多,所以比较难缕清的关系吧!在笔者看来,我们还是要吸取其思想而不是生搬硬套。来看下类图:大话设计模式-类图看类图已经很乱了,来简单的梳理下。我们只看接口,这样就不难看出实际上是抽象工厂生产抽象产品的过程,而具体实现都是各自的实现类来做。看下具体的demo:工厂层/*** 工厂接口*/publicinterface IFactory {public IUser createUser();pu...
定义:专门定义一个类来创建其他类的实例,被创建的实例通常都具有共同的父类和接口。意图:提供一个类由它负责根据一定的条件创建某一及具体类的实例//简单工厂,存在不符合开闭原则的地方,可以在参考抽象工厂/工厂方法//输入苹果,就可以通过工厂直接调用采摘苹果,而不用new一个Apple
public class factoryDemo {public static void main(String[] args) {// TODO Auto-generated method stuFactory factory = new Factory();F...
声明一个js对象,var box1=new Object();box2.name1=‘123‘;box2.age=100;box2.run=function(){ return this.box2.name1; }//再次声明一个对象var box2=new Object();box.name1=‘Lee‘;box.age=100;box.run=function(){return this.name;+‘运行中‘; }//为了解决多个类似声明的问题我们可以用一种叫做工厂模式的方法,//这种方法就是为了解决实例化对象产生大量重复的问题. function createObject(name,age){ //集中实例化函数 ...
概念定义简单工厂(Simple Factory)模式,又称静态工厂方法(Static Factory Method)模式,即定义一个工厂类,根据传入的不同参数创建不同的产品实例,这些实例对象具有共同的父类或接口。应用场景需要创建的产品对象较少,否则工厂逻辑会过于复杂。客户端只关心产品的接口,而不关心对象的具体创建过程。示例代码简单工厂模式由一个工厂类、一个产品接口(或抽象类)和一组实现该接口的具体产品组成。这个工厂类根据传入的参数创造一个...
下面的代码是稍微改进后的工厂模式 abstract class MoveAble{public abstract void run();
}
abstract class Woopen{public abstract void attack();
}abstract class Food{public abstract void eat();
}interface AllFactory{public MoveAble createM();public Woopen createW();public Food createF();
}class Car extends MoveAble{public void run(){System.out.println("Car is runing");}
}class AK47 extends Woopen{pu...
java工厂模式分三种:简单工厂模式、工厂方法模式、抽象工厂模式。简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式就是通过一个"全能类",根据外界传递的信息来决定创建哪个具体类的对象。如下图(懒得写demo了,知乎上截了一个。):通过一个简单工厂类,根据nam...
工厂模式定义:提供创建对象的接口。为何使用工厂模式工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带...
java设计模式2————工厂模式1、工厂模式介绍:1.1、实现了创建者与调用者的分离1.2、详细分类:简单工厂模式工厂方法模式抽象工厂模式1.3、所遵循的OOP原则:开闭原则:对扩展开放,对修改关闭依赖倒转原则:面向接口编程迪米特法则:只与你直接的朋友进行通信,而避免与陌生人进行通信。1.4、核心本质实例化对象,不使用new,用工厂方法代替将调用者与我们的实现类解耦1.5、三种模式2、简单工厂模式2.1、先建立汽车抽象类packa...
一、描述简单工厂模式又名静态工厂方法模式,是所有工厂模式中最简单的一个,它定义一个具体的工厂类来负责创建所有类的对象并初始化创建的对象,它主要由3部分组成:工厂类、抽象类、实现抽象类的具体类,然后通过客户端调用工厂类创建相应的对象。注意:简单工厂模式不属于GoF总结的23种设计模式,它是相当于初学java的HelloWorld案例,帮助初学者了解设计模式,增长信心的一个设计模式。二、简单工厂模式的优缺点优点:相对于直...