当前位置: 首页 > news >正文

网站设计字体大小规范精品一卡2卡三卡4卡分类

网站设计字体大小规范,精品一卡2卡三卡4卡分类,网站内部优化是什么意思,天猫网站企业网站专业性诊断分析文章目录 一.什么是抽象工厂设计模式#xff1f;二.抽象工厂模式的特点三.抽象工厂模式的结构四.抽象工厂模式的优缺点五.抽象工厂模式的 C 实现六.抽象工厂模式的 Java 实现七.代码解析八.总结 类图#xff1a; 抽象工厂设计模式类图 一.什么是抽象工厂设计模式#xff1f… 文章目录 一.什么是抽象工厂设计模式二.抽象工厂模式的特点三.抽象工厂模式的结构四.抽象工厂模式的优缺点五.抽象工厂模式的 C 实现六.抽象工厂模式的 Java 实现七.代码解析八.总结 类图 抽象工厂设计模式类图 一.什么是抽象工厂设计模式 抽象工厂模式Abstract Factory Pattern 是一种创建型设计模式它提供一个接口用于创建一系列相关或相互依赖的对象而无需指定它们的具体类。  与工厂方法模式的区别在于抽象工厂模式更注重产品族的概念可以同时创建多个相关的产品对象。 二.抽象工厂模式的特点 多产品创建可以创建一组相关联的对象如按钮和文本框。解耦性强客户端只需调用工厂接口创建对象而不需要关心具体实现。可扩展性可以通过增加新的工厂子类来扩展产品系列。 三.抽象工厂模式的结构 AbstractFactory抽象工厂声明了一组创建产品的方法。ConcreteFactory具体工厂实现抽象工厂的接口创建具体的产品。AbstractProduct抽象产品定义产品的接口。ConcreteProduct具体产品实现抽象产品接口的具体类。Client客户端通过工厂接口与具体产品交互。 四.抽象工厂模式的优缺点 优点: 易于扩展增加新的产品族只需增加对应的具体工厂类和产品类。封装性强客户端与具体产品实现解耦。符合开闭原则通过扩展具体工厂类来支持新产品。 缺点: 增加复杂性每增加一个产品族都需要新增具体工厂和产品类。不支持单一产品族扩展如果只想增加单个产品可能需要修改抽象工厂接口。 五.抽象工厂模式的 C 实现 #include iostream #include memory using namespace std;// 抽象产品A class AbstractProductA { public:virtual void MethodA() const 0;virtual ~AbstractProductA() default; };// 抽象产品B class AbstractProductB { public:virtual void MethodB() const 0;virtual ~AbstractProductB() default; };// 具体产品A1 class ConcreteProductA1 : public AbstractProductA { public:void MethodA() const override {cout ConcreteProductA1::MethodA endl;} };// 具体产品A2 class ConcreteProductA2 : public AbstractProductA { public:void MethodA() const override {cout ConcreteProductA2::MethodA endl;} };// 具体产品B1 class ConcreteProductB1 : public AbstractProductB { public:void MethodB() const override {cout ConcreteProductB1::MethodB endl;} };// 具体产品B2 class ConcreteProductB2 : public AbstractProductB { public:void MethodB() const override {cout ConcreteProductB2::MethodB endl;} };// 抽象工厂 class AbstractFactory { public:virtual unique_ptrAbstractProductA CreateProductA() const 0;virtual unique_ptrAbstractProductB CreateProductB() const 0;virtual ~AbstractFactory() default; };// 具体工厂1 class ConcreteFactory1 : public AbstractFactory { public:unique_ptrAbstractProductA CreateProductA() const override {return make_uniqueConcreteProductA1();}unique_ptrAbstractProductB CreateProductB() const override {return make_uniqueConcreteProductB1();} };// 具体工厂2 class ConcreteFactory2 : public AbstractFactory { public:unique_ptrAbstractProductA CreateProductA() const override {return make_uniqueConcreteProductA2();}unique_ptrAbstractProductB CreateProductB() const override {return make_uniqueConcreteProductB2();} };// 客户端代码 void ClientCode(const AbstractFactory factory) {auto productA factory.CreateProductA();auto productB factory.CreateProductB();productA-MethodA();productB-MethodB(); }int main() {cout Using ConcreteFactory1: endl;ConcreteFactory1 factory1;ClientCode(factory1);cout Using ConcreteFactory2: endl;ConcreteFactory2 factory2;ClientCode(factory2);return 0; }六.抽象工厂模式的 Java 实现 // 抽象产品A interface ProductA {void methodA(); }// 抽象产品B interface ProductB {void methodB(); }// 具体产品A1 class ConcreteProductA1 implements ProductA {public void methodA() {System.out.println(ConcreteProductA1::methodA);} }// 具体产品A2 class ConcreteProductA2 implements ProductA {public void methodA() {System.out.println(ConcreteProductA2::methodA);} }// 具体产品B1 class ConcreteProductB1 implements ProductB {public void methodB() {System.out.println(ConcreteProductB1::methodB);} }// 具体产品B2 class ConcreteProductB2 implements ProductB {public void methodB() {System.out.println(ConcreteProductB2::methodB);} }// 抽象工厂 interface AbstractFactory {ProductA createProductA();ProductB createProductB(); }// 具体工厂1 class ConcreteFactory1 implements AbstractFactory {public ProductA createProductA() {return new ConcreteProductA1();}public ProductB createProductB() {return new ConcreteProductB1();} }// 具体工厂2 class ConcreteFactory2 implements AbstractFactory {public ProductA createProductA() {return new ConcreteProductA2();}public ProductB createProductB() {return new ConcreteProductB2();} }// 客户端代码 public class AbstractFactoryDemo {public static void main(String[] args) {AbstractFactory factory1 new ConcreteFactory1();ProductA productA1 factory1.createProductA();ProductB productB1 factory1.createProductB();productA1.methodA();productB1.methodB();AbstractFactory factory2 new ConcreteFactory2();ProductA productA2 factory2.createProductA();ProductB productB2 factory2.createProductB();productA2.methodA();productB2.methodB();} }七.代码解析 抽象产品类 AbstractProductA 和 AbstractProductB 是抽象类定义了各自的接口方法如 MethodA 和 MethodB。 具体产品类 ConcreteProductA1 和 ConcreteProductA2 实现了 AbstractProductA 接口表示同一产品族中的不同产品。ConcreteProductB1 和 ConcreteProductB2 实现了 AbstractProductB 接口。 抽象工厂类 AbstractFactory 提供了创建产品的方法接口CreateProductA 和 CreateProductB由具体工厂实现。 具体工厂类 ConcreteFactory1 创建产品族 ConcreteProductA1 和 ConcreteProductB1。ConcreteFactory2 创建产品族 ConcreteProductA2 和 ConcreteProductB2。 客户端代码 客户端通过抽象工厂创建产品不需要知道具体工厂和产品的实现细节。多态使得客户端代码具有很强的灵活性。 八.总结 抽象工厂模式在需要创建一组相关对象时非常有用同时也很好地遵循了依赖倒置原则和开闭原则。通过抽象工厂客户端只需关心工厂接口而不需要了解具体产品的实现从而实现了代码的解耦。尽管增加了系统的复杂性但在复杂系统中它可以显著提高代码的灵活性和可维护性。 应用场景: 需要创建一组相关或相互依赖的对象如操作系统中的窗口、按钮和文本框。产品族的概念明确如不同品牌的家电冰箱和电视。客户端不需要知道产品的具体实现如通过配置文件动态加载具体工厂类。
http://www.hkea.cn/news/14492972/

相关文章:

  • 免费的域名注册网站宣传广告牌图片
  • 网站集成微信登陆网上申报系统
  • 网站和公众号的区别是什么意思枝江市住房和城乡建设局网站
  • 做网站分什么软件石家庄移动端网站建设
  • 韩国封号事件网站建设网站浮动窗口怎么做的
  • 网站不足网站开发程序哪个好
  • 大良网站建设广东的一起(17)做网站
  • 北京网站设计公司哪家公司好安阳市设计
  • 和布克赛尔网站建设动漫设计与制作专业的学校有哪些
  • 宿州网站公司青岛建设工程信息网
  • 扬州 网站建设828企业服务平台
  • wordpress 企业站旅游wordpress
  • 汉滨区住房和城乡建设局网站在阿里云安装wordpress
  • 网站首页图片大全网站地图 xml html
  • 备案网站建设方案模板吉林省吉林市有几个区
  • 郑州公司网站制作用ps做个人网站界面
  • 什么是 网站收录网络推广软件
  • 个人信息页面设计漂亮的网站如何进行推广
  • dw网页设计制作网站的成品新闻发稿公司
  • 做网站多少钱google注册公司流程图片
  • 有个印度做网站的天天找我建盏公司官方网站
  • 网上做夫妻的网站大型门户网站核心技术
  • 网站开发就业培训班电子贺卡在线制作网站
  • 公司网站建设成都做网站好赚钱吗
  • 视频播放网站建设wordpress菜单导航代码
  • 内蒙古建设工程交易中心网站企业为什么要建站点呢
  • 宣讲家网站 家风建设手机网站生成app软件
  • NET网站开发工程师网站招聘网站开发要多久
  • 建网站需不需要服务器2022年必火的创业项目加盟
  • phpadmin wordpress宁波网站推广优化