首页 > 其他分享 >9.20日记

9.20日记

时间:2023-09-20 11:56:08浏览次数:37  
标签:9.20 创建 接口 工厂 抽象 产品 小米 日记

1 抽象工厂模式的定义

抽象工厂模式是一种创建型设计模式,它提供了一种创建一组相关或相互依赖对象的方式,而无需指定它们的具体类。该模式以一组抽象接口为核心,包括抽象工厂接口和一组抽象产品接口,每个具体工厂类负责创建特定产品家族,保证这些产品之间的兼容性。客户端代码通过与抽象工厂和抽象产品接口交互,可以轻松地切换不同工厂来创建不同系列的产品,从而实现高内聚、低耦合的设计。

抽象工厂: 在抽象工厂模式中,我们首先定义一个抽象工厂,该工厂有多个方法,每个方法负责创建不同类型的产品,例如手机、电脑、手表等。在这个例子中,我们将创建一个AbstractFactory,其中包含了createPhone、createComputer、createWatch等方法,分别用于创建手机、电脑和手表。

具体工厂: 对于每个制造公司(小米和华为),我们会实现具体的工厂类,这些工厂类继承了抽象工厂并实现了其中的方法。例如,小米工厂类会实现createPhone方法以创建小米手机,createComputer方法以创建小米电脑,createWatch方法以创建小米手表。同样,华为工厂类也会有相应的实现。

抽象产品: 为了确保产品之间的兼容性,我们定义一组抽象产品类,如AbstractPhone、AbstractComputer、AbstractWatch等。每个抽象产品类定义了产品的通用接口,例如,AbstractPhone可以有makeCall方法。

具体产品: 每个具体工厂类都会创建特定品牌的产品,例如,小米工厂会创建小米手机、小米电脑、小米手表等。这些具体产品类实现了抽象产品类的接口,例如,XiaomiPhone类实现了AbstractPhone接口的makeCall方法。

客户端: 最后,客户端代码可以选择使用哪个具体工厂(小米或华为工厂),然后通过工厂创建产品。客户端不需要了解具体的产品如何创建,只需使用抽象工厂接口和抽象产品接口。

标签:9.20,创建,接口,工厂,抽象,产品,小米,日记
From: https://www.cnblogs.com/zhangmingmkzj/p/17716971.html

相关文章

  • 9.19日记
    若是DataNode没有启动,可尝试如下的方法(注意这会删除HDFS中原有的所有数据,如果原有的数据很重要请不要这样做):#针对DataNode没法启动的解决方法cd/usr/local/hadoop./sbin/stop-dfs.sh  #关闭rm-r./tmp    #删除tmp文件,注意这会删除HDFS中原有的所有数据./bi......
  • 9.20算法
    需要回溯到失败匹配之后的下一个,索引回去就可以实现strStr()给你两个字符串 haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果 needle不是haystack的一部分,则返回 -1。 示例1:输入:haystack="sadbutsad",n......
  • 【日记】文章更新计划
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top文章最后有详细的更新计划{%timeline2023,pink%}第一版发布【完结~开发规范系列】Linux系列重新定位,不再只是简单的说常用命令周二rocketmq更换为nginx系列微服务......
  • 日记六
    今天我们下午上了java课,我学会了如何在编写程序中,运用正确的方法去节省编写代码的时间,将一个复杂的具有很多部分的程序,可以拆分成许多个模组,然后今天课上我还独立完成四则运算这个代码,但是我不会将时间进行限制,所以我需要学习的还有很多......
  • 9.18日记
    今天学习了高精度减法//给定两个正整数#include<iostream>#include<vector>usingnamespacestd;vector<int>sub(vector<int>&A,vector<int>&B){   vector<int>C;   intt=0;   for(inti=0;i<A.size();i++)   {       ......
  • 2020-12-17-xtx的日常开发日记
    layout:posttitle:xtx第15周日常开发日记categories:日志tags:-日志-2020日志BGImage:'https://cdn.jsdelivr.net/gh/xutongxin1/xutongxin1.github.io@bebc52fb1b67a08f8db0026051b9716a88a37900/asset/%E6%97%A5%E5%BF%97/75065066_p0.jpg'jekyll-theme-W......
  • 2020-12-1-xtx第13周开发日记
    layout:posttitle:xtx第13周开发日志categories:日志tags:-日志-2020日志BGImage:'https://cdn.jsdelivr.net/gh/xutongxin1/xutongxin1.github.io@d65706f589a6ace903309ed982a3058a2b3251e3/asset/%E6%97%A5%E5%BF%97/20201211144323.png'jekyll-theme......
  • 2020-11-23-第12周开发日记
    layout:posttitle:xtx第12周开发日志categories:日志tags:-日志-2020日志BGImage:'https://cdn.jsdelivr.net/gh/xutongxin1/xutongxin1.github.io@a09d6cce1e133e1819736340f4016f10a0226969/asset/background/75006825_p0.jpg'jekyll-theme-WuK:m......
  • 9.16日记
    hbase(main):001:0>listTABLE                                                                                                                  ......
  • 9.15日记
    今天进行了Javaweb连接HBASE实现增查的任务测试<%@pagecontentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head>   <linkrel="stylesheet"href="layui/css/layui.css">   ......