与工厂相关的的三个设计模式 2020-11-08 15:03:29
简单工厂模式:说白就是,间接脱离了new 创建对象,而是直接从工厂中获得对象。
简单工厂:不是用new创建对象,而是将创建对象这一过程集中放在了工厂中,这样便于维护修改创建过程;也实现了调用创建对象和对象之间的解耦。
话不多说,先了解一下如下UML类图:

汽车类 package com.yuan.factory.simple;
public abstract class Car {
public abstract void getname();
}
大众汽车类
package com.yuan.factory.simple;
public class Dazong extends Car {
@Override public void getname() { System.out.println("大众"); } }
特斯拉汽车类
package com.yuan.factory.simple;
public class Tsla extends Car { @Override public void getname() { System.out.println("特斯拉"); } }
汽车工厂类
package com.yuan.factory.simple;
public class CarFactory {
public static Car getTsla(){ return new Tsla(); }
public static Car getDazong(){ return new Dazong(); }
}
客户类
package com.yuan.factory.simple;
public class Customer { public static void main(String[] args) { CarFactory carFactory = new CarFactory(); carFactory.getTsla().getname(); carFactory.getDazong().getname(); } }
|
工厂方法模式:
由于简单工厂模式,不满足“对扩展开放,对修改关闭”原则,所以说,就出现了工厂方法模式。那么工厂方法模式就是在简单工厂模式上,对每个子类建立一个工厂,因此实现扩展性,遵循上述原则。

汽车接口 package com.yuan.factory.method;
public interface Car {
void getname(); }
大众汽车类
package com.yuan.factory.method;
public class Dazong implements Car { @Override public void getname() { System.out.println("大众"); } } 特斯拉汽车类
package com.yuan.factory.method;
public class Tsla implements Car { @Override public void getname() { System.out.println("特斯拉"); } }
汽车工厂接口
package com.yuan.factory.method;
public interface CarFactory {
Car getCar(); } 大众汽车工厂
package com.yuan.factory.method;
public class DazongFactory implements CarFactory {
@Override public Car getCar() { return new Dazong(); } }
特斯拉汽车工厂
package com.yuan.factory.method;
public class TslaFactory implements CarFactory{
@Override public Car getCar() { return new Tsla(); } }
客户类
package com.yuan.factory.method;
public class Customer {
public static void main(String[] args) { new DazongFactory().getCar().getname(); new TslaFactory().getCar().getname(); } }
|
抽象工厂模式:
产品族:由同一家产品生产厂家生产的不同类型产品。
同一产品类型:略...略...略
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。