当前位置:网站首页>Factory Pattern模式(简单工厂、工厂方法、抽象工厂模式)

Factory Pattern模式(简单工厂、工厂方法、抽象工厂模式)

2020-11-08 23:45:56 TreasureBoy

与工厂相关的的三个设计模式 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)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

 

版权声明
本文为[TreasureBoy]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/TreasureBoy-blog/p/13946384.html