工厂模式

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。

优点:

1、将创建实例的工作与使用实例的工作分开
2、把初始化实例时的工作放到工厂里进行,使代码更容易维护。
3、使得修改代码时不会引起太大的变动,良好的扩展性。

简单工厂模式

1.创建共同的接口

//创建一个共同的接口 -- 键盘

public interface Keyboard {

public void makeKeyboard();

}

 

2.创建实现类

实现类1:Razer

public class Razer implements Keyboard{

//实现方法

public void makeKeyboard() {

System.out.println("制造了雷蛇键盘");

}

}

实现类2:Logitech

public class Logitech implements Keyboard{

public void makeKeyboard() {

System.out.println("制造了罗技键盘");

}

}

 

3.创建工厂类

public class KeyboardFactory {

//根据传进的类型进行创建不同类型的实例

public Keyboard makeKeyBoard(String type) {

if ("Razer".equals(type)) {

return new Razer();

}

if ("Logitech".equals(type)) {

return new Logitech();

}

return null;

}

}

 

4.测试

public class TestDemo {

public static void main(String[] args) {

KeyboardFactory factory = new KeyboardFactory();

Keyboard keyBoard = factory.makeKeyBoard("Razer");

//存在此类型的键盘就制造

if (keyBoard != null) {

keyBoard.makeKeyboard();

}else {

System.out.println("没有此类型的键盘");

}

}

}

 

一个抽象产品类,可以派生出多个具体产品类

一个具体工厂类创建过个产品类

 

缺点:每添加一中类型的键盘,就得修改工厂类,违反闭包原则,扩展时不应修改原有类的内部代码

工厂方法模式

设计模式(二) ---- 工厂模式 

一个抽象产品类,可以派生出多个具体的产品类:显示器下有不同牌子的显示器

一个抽象工厂类,可以派生出多个具体的工厂类:显示器工厂类下有不同显示器的工厂类

一个工厂类只能创建一个具体的产品类实例:每个显示器工厂类只能创建自己牌子的显示器

代码的Display系列

抽象工厂模式

 设计模式(二) ---- 工厂模式

多个抽象产品类,每个产品类可以派生出多个具体的产品类

一个抽象工厂类,可以派生出多个具体的工厂类

每个具体的工厂类可以创建出多个具体的产品,就是创建一个产品线下的多个产品

代码的pc系列

总结:

工厂方法模式和抽象工厂模式对比

工厂模式是一种极端情况下的抽象工厂模式,可以将抽象工厂模式看做是工厂模式的扩展和升级

工厂模式用来创建一个产品的等级结构,抽象工厂模式是创建多个产品的等级结构

工厂模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类

工厂模式的优点:

系统可以在不修改具体工厂角色的情况下引进新产品

客户端不必关心对象如何创建,明确了职责

更好的理解面向对象的原则,面向接口编程,二不是面向实现编程

转载于:https://my.oschina.net/wxdl/blog/703486

相关文章:

  • 2022-12-23
  • 2021-05-21
  • 2022-12-23
  • 2021-04-29
  • 2021-08-15
  • 2021-06-28
  • 2021-10-31
  • 2021-12-08
猜你喜欢
  • 2021-12-17
  • 2022-01-09
  • 2021-09-22
  • 2022-12-23
相关资源
相似解决方案