设计模式 - 工厂模式

--------------目录直通车-------------

  • 设计模式 - 工厂模式
    • 一、简单工厂模式
    • 二、工厂方法模式
    • 三、抽象工厂模式

分为简单工厂模式、工厂方法模式、抽象工厂。只关心结果,不关心过程;定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行;

以生产手机为例,制造手机有一套标准,现在市面的手机品牌会找代工厂按照这个标准生产手机。

一、简单工厂模式

不同的产品,一种做法。

Phone类:手机标准规范类(AbstractProduct)

public interface Phone {void make();
}

MiPhone类:制造小米手机

public class MiPhone implements Phone {public MiPhone() {make();}@Overridepublic void make() {System.out.println("生产小米手机");}
}

HuaweiPhone类:制造华为手机

public class HuaweiPhone implements Phone {public HuaweiPhone(){make();}@Overridepublic void make() {System.out.println("生产华为手机");}
}

PhoneFactory类:手机代工厂(Factory)

public class PhoneFactory {public Phone makePhone(String phoneType) {if(phoneType.equalsIgnoreCase("XIAOMI")){return new MiPhone();}else if(phoneType.equalsIgnoreCase("HUAWEI")) {return new HuaweiPhone();}return null;}
}

二、工厂方法模式

不同产品,不同的生产方法,专门的工厂生产专门的产品。

AbstractFactory类:生产不同产品的工厂的抽象类

public interface AbstractFactory {Phone makePhone();
}

XiaoMiFactory类:生产小米手机的工厂

public class XiaoMiFactory implements AbstractFactory{@Overridepublic Phone makePhone() {return new MiPhone();}
}

HuaweiFactory类:生产华为手机的工厂

public class HuaweiFactory implements AbstractFactory{@Overridepublic Phone makePhone() {return new HuaweiPhone();}
}

三、抽象工厂模式

了解抽象工厂之前先来了解两个概念:

1、产品族:一个品牌旗下的多种产品

2、产品等级结构:不同品牌下的同一种产品

每一个品牌就是每一个具体的工厂,也就是说一个品牌要生产一个产品族需要对应产品等级结构的工厂的来完成。

电脑(PC)类:定义PC产品的接口(AbstractPC)

public interface PC {void make();
}

MiPC类:定义小米电脑产品(MIPC)

public class MiPC implements PC {public MiPC() {this.make();}@Overridepublic void make() {System.out.println("生产小米电脑");}
}

HuaweiPC类:定义华为电脑产品(HuaweiPC)

public class HuaweiPC implements PC {public HuaweiPC() {this.make();}@Overridepublic void make() {System.out.println("生产华为电脑");}
}

AbstractFactory类:增加PC产品制造接口

public interface AbstractFactory {Phone makePhone();PC makePC();
}

XiaoMiFactory类:增加小米PC的制造(ConcreteFactory1)

public class XiaoMiFactory implements AbstractFactory{@Overridepublic Phone makePhone() {return new MiPhone();}@Overridepublic PC makePC() {return new MiPC();}
}

HuaweiFactory类:增加苹果PC的制造(ConcreteFactory2)

public class HuaweiFactory implements AbstractFactory {@Overridepublic Phone makePhone() {return new HuaweiPhone();}@Overridepublic PC makePC() {return new HuaweiPC();}
}

Spring5设计模式- 工厂模式相关推荐

  1. Java设计模式-工厂模式(3)抽象工厂模式

    在Java设计模式-工厂模式(2)工厂方法模式 我们知道了工厂方法模式解决了简单工厂模式中的缺陷,做到了满足开闭原则,但是时代是进步的,进而又产生新的问题,工厂难道只能生产一种东西吗.我们所见到的工厂 ...

  2. Java设计模式-工厂模式(2)工厂方法模式

    在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而"工厂方法模式"是对简单工厂模式的进一步抽象化,其好处是可以使系统在不 ...

  3. Java设计模式-工厂模式(1)简单工厂模式

    Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...

  4. 设计模式---工厂模式

    设计模式---工厂模式 工厂方法模式 概述:工厂方法模式中抽象工厂负责定义创建对象的接口,具体创建工作由继承抽象工厂的具体类实现. 优点:客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新 ...

  5. java设计模式工厂模式_Java中的工厂设计模式

    java设计模式工厂模式 Welcome to the Factory Design Pattern in Java tutorial. Factory Pattern is one of the C ...

  6. java设计模式工厂模式_Java中的复合设计模式

    java设计模式工厂模式 Composite pattern is one of the Structural design pattern. Composite design pattern is ...

  7. java设计模式工厂模式_Java中的桥梁设计模式

    java设计模式工厂模式 Today we will look into Bridge Design Pattern in java. When we have interface hierarchi ...

  8. java设计模式工厂模式_Java中的外观设计模式

    java设计模式工厂模式 Facade Design Pattern is one of the Structural design patterns (such as Adapter pattern ...

  9. 设计模式-工厂模式(学习)

    设计模式-工厂模式(学习) 在程序的世界里,就像射雕英雄传一样,我们的技能就像是武功一样,我们只有不断去学习练习才能有机会像郭靖一样成为"天下第一". 我认为技能和武功是很类似的, ...

最新文章

  1. ArcGIS的许可文件问题
  2. 《python核心编程第二版》第5章习题
  3. 餐厅管理程序c语言源代码,课内资源 - 基于C++的餐厅管理程序的设计与实现
  4. html5--6-4 CSS选择器
  5. boost::breadth_first_search用法的测试程序
  6. 苹果4怎么越狱_苹果手机如何截屏
  7. 前端学习(988):jquery常见的api
  8. 特殊乘法 [清华大学计算机研究生机试真题]
  9. 微信支付宝个人免签约即时到帐接口开发附demo
  10. 基于SSM框架CRM客户管理系统
  11. bada开发tips
  12. 星际争霸2:自由之翼 作弊秘籍
  13. 聊聊 C++ 中的四种类型转换符
  14. 天翼云服务器硬盘怎么挂载,天翼云主机云磁盘管理(一)
  15. SpringBoot2整合ElasticSearch(包含ElasticSearch入门+spring-boot-starter-data-elasticsearch)
  16. 基于空间域的信息隐藏关键技术研究
  17. linux内核源码分析之CFS调度
  18. SpringBoot——SpringBoot集成jsp
  19. python编程 | pdf转excel的python方法
  20. 银行核心系统-贷款系统【信贷系统】

热门文章

  1. 解决kali安装搜狗输入法,apt-get install -f之后图形界面丢失问题
  2. centos7 安装mariadb
  3. php页面锚点,html 锚点三种实现方法
  4. 建筑信息建模软件:Revit 2024 中文特别版
  5. UWPWP8.1 基础控件——Grid
  6. 传奇人物《周兴和》书连载31 在魔术师迷宫里
  7. 计算机网络 ARP协议全面实验分析讲解
  8. xynuoj 捕杀恶龙 酒馆浪人的博客
  9. 电脑不支持Win11系统怎么自己安装教学
  10. 短视频app开发:抖音源码,杂货铺or藏宝阁?