-
工厂和抽象工厂模式的不同查看全部
-
什么是工厂模式查看全部
-
可能有用查看全部
-
get it查看全部
-
工厂模式的应用: JDBC SpringFactory(IOC容器) 工厂方法模式和抽象工厂模式对比: 1.工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂方法模式的推广. 2.工厂方法模式用来创建一个产品的等级结构,而抽象工厂模式是用来创建多个产品的等级结构. 3.工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类. 工厂模式的作用: 1.系统可以在不修复具体工厂角色的情况下引进新的产品. 2.客户端不必关心对象如何创建,明确了职责. 3.更好的理解面向对象的原则,面向接口编程,而不是面向实现编程.查看全部
-
抽象工厂模式 组成与工厂方法模式一样. 代码: //抽象产品类 public interface Car{ public void drive(); } //抽象产品类 public interface Food{ public void eat(); } //具体产品类(可多个) public class Benz implements Car{ public void drive() { System.out.println("Driving Benz "); } } //具体产品类(可多个) public class Apple implements Food{ public void eat() { System.out.println("eat apple"); } } //抽象工厂类 public abstract class AbstractFactory { public abstract Car createCar(); public abstract Food createFood(); //构成了产品族 } //具体工厂类(可以多个) public class DefaultFactory extends AbstractFactory{ public Food createFood() { return new Apple(); } public Car createCar() { return new Benz(); } } 测试: AbstractFactory f = new DefaultFactory(); Car c = f.createCar(); Food a = f.createFood(); 在抽象工厂模式中,抽象产品可能是一个或多个,从而构成一个或多个产品族,在只有一个产品族的情况下,抽象工厂模式实际上退化到工厂方法模式.查看全部
-
工厂方法模式和简单工厂模式在定义上的不同是很明显的. 工厂方法模式的核心是一个抽象工厂类,而不像简单工厂模式,把核心放在一个实类上,工厂方法模式可以允许很多实的工厂类从抽象工厂类继承下来,从而可以在实际上成为多个简单工厂模式的综合,从而推广了简单工厂模式. 简单工厂模式是由工厂方法模式退化而来,若确定一个系统只需要一个实的工厂类,那么就不妨把抽象工厂类合并到实的工厂类中去,这样一来,我们就退化到简单工厂模式了.查看全部
-
工厂方法模式: 工厂方法模式是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给抽象工厂的子类去做. 组成: 1.抽象工厂角色:这是工厂方法模式的核心,是具体工厂角色必须实现的接口或者必须继承的父类. 2.具体工厂角色:由应用程序调用以创建对应的具体产品的对象. 3.抽象产品角色:它一般是具体的一个接口. 4.具体产品角色:工厂类所创建的对象就是此角色的实例,具体产品类实现抽象产品类. //抽象产品角色 public interface Car{ public void drive(); } //具体产品角色 public class Benz implements Car{ public void drive(){ System.out.println("Driving Benz "); } } //具体产品角色 public class Bmw implements Car{ public void drive(){ System.out.println("Driving Bmw "); } } //抽象工厂 public abstract class CarFactory{ public abstract Car create(); } //具体工厂 public class BenzFactory extends CarFactory{ public Car create(){ return new Benz(); } } //具体工厂 public class BmwFactory extends CarFactory{ public Car create(){ return new Bmw(); } } 测试类: //根据需要创建哪种具体产品实例来选择具体的抽象工厂实现类 CarFactory factory = new XXXFactory(); Car car = factory.create(); car.drive(); 可以看出工厂方法的加入,使得对象的数量成倍增长,当产品种类非常多时,会出现大量的与之对应的工厂对象,可以考虑使用简单工厂模式与工厂方法模式相结合的方式来减少工厂类.查看全部
-
使用简单工厂模式时,当有很多具体产品的实现类,则在方法中就要依次判断并返回具体产品的实例. 此时可以使用反射机制动态来加载实例即可(根据类的名称来创建实例),当增加产品实现类时也不需要进行判断. 使用Class.forName("")方法根据全限类名来获取具体产品类的类类型,再通过Class类的newInstance()方法返回一个实例. //工厂类角色 public class DriverFactory{ //工厂方法.注意返回类型为抽象产品角色 public Car driverCar(String className){ Car car =(Car)Class.forName(className).newInstance(); return car; } 外界调用driverCar工厂方法时,需要把产品类的全限类名作为该方法的参数. 但全限类名太长了,可以创建一个properties文件直接通过类名来映射全限类名. 创建properties文件. Benz=com.own.Benz Bmw=com.own.Bmw 在工程类的方法中读取properties文件. //工厂类角色 public class DriverFactory{ //工厂方法.注意返回类型为抽象产品角色 public Car driverCar(String className){ //获取读取properties文件的输入流. InputStream in=this.getClass().getResourceAsStream("xxx.properties"); Properties prop=new Properties(); prop.load(in); Car car =Class.forName(prop.get(className)).newInstance(); return car; } 因此在外界调用driverCar方法传参时直接提供类名即可.查看全部
-
简单工厂模式: 简单工厂模式又称静态工厂方法模式,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化. 组成: 1.工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑.在java中它往往由一个具体类实现 2.抽象产品角色:它一般是具体的一个接口 3.具体产品角色:工厂类所创建的对象就是此角色的实例,具体产品类实现抽象产品类. 例子: //抽象产品角色 public interface Car{ public void drive(); } //具体产品角色 public class Benz implements Car{ public void drive() { System.out.println("Driving Benz "); } } //具体产品角色 public class Bmw implements Car{ public void drive() { System.out.println("Driving Bmw "); } } //工厂类角色 public class DriverFactory{ //工厂方法.注意返回类型为抽象产品角色 public Car driverCar(String str){ //判断逻辑,返回具体的产品角色给Client. if(str.equalsIgnoreCase("Benz")){ return new Benz(); }else if(str.equalsIgnoreCase("Bmw")){ return new Bmw(); }else{ return null; } } } 在外界直接创建一个工程实例,然后调用工程的driverCar()方法指定获取的产品名获取一个该产品的实例.查看全部
-
工厂模式 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目.的.即代替外部用new关键字去创建对象. 简单工厂模式(Simple Factory):不利于产生系列产品 工厂方法模式(Factory Method):又称为多形性工厂 抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品 一般将工厂模式分为两类: 工厂方法模式与抽象工厂模式,将简单工厂模式看为工厂方法模式的一种特例,两者归为一类.查看全部
-
工厂模式:定义一个用于创建对象的借口,让子类决定实例化哪一个类 抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 个人觉得这个区别在于产品,如果产品单一,最合适用工厂模式,但是如果有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。再通俗深化理解下:工厂模式针对的是一个产品等级结构 ,抽象工厂模式针对的是面向多个产品等级结构的。查看全部
-
抽象工厂模式的类关系图查看全部
-
松耦合查看全部
-
什么情况查看全部
举报
0/150
提交
取消