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

网站建设 意向协议书湖南产品网络推广业务

网站建设 意向协议书,湖南产品网络推广业务,做网站需要的手续,页面html wordpress定义 提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。 使用场景 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。如何应对这种…

定义

提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。

使用场景

  • 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。
  • 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制"来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?

结构在这里插入图片描述

代码示例

//AbstractFactory.h
/****************************************************/
#ifndef ABSTRACT_FACTORY_H
#define ABSTRACT_FACTORY_H
#include<iostream>
using namespace std;//形状抽象类接口shape
class shape
{
public:shape() {};virtual ~shape() {};virtual void draw() = 0;virtual double get_area() = 0;virtual void calculate_area() = 0;enum shape_type {rectangle,circle};protected:double area;
};//继承形状抽象接口的三角形类rectangle
class rectangle :shape
{
public:rectangle() { h = 2.5; k = 3.6; area = 0; };~rectangle() {};void draw();double get_area();void calculate_area();
private:double h;double k;
};	void rectangle::draw()
{cout << "draw rectangle class" << endl;
}double rectangle::get_area()
{return area;
}void rectangle::calculate_area()
{area = h*k / 2;
}//继承形状抽象接口的圆形类circle
class circle :shape
{
public:circle() { r = 4.8; area = 0; };~circle() {};void draw();double get_area();void calculate_area();
private:double r;
};void circle::draw()
{cout << "draw circle class" << endl;
}double circle::get_area()
{return area;
}void circle::calculate_area()
{area = 3.14*r*r;
}//颜色抽象类接口color
class color
{
public:color() {};virtual ~color() {};virtual void fill()=0;enum color_type { red, green };
};//继承颜色抽象类的红色类red
class red :color
{
public:red() {};~red() {};void fill() { cout << "fill red color" << endl; };
};//继承颜色抽象类的绿色类green
class green :color
{
public:green() {};~green() {};void fill() { cout << "fill green color" << endl; };
};//抽象类工厂abstractfactory
class abstractfactory
{
public:abstractfactory() {};virtual ~abstractfactory() {};virtual shape* getshape(shape::shape_type type)=0;virtual color* getcolor(color::color_type type)=0;enum factory_type{tshape,tcolor};
};//继承抽象工厂的形状工厂shapefactory
class shapefactory:abstractfactory
{
public:shapefactory() {};virtual ~shapefactory() {};shape* getshape(shape::shape_type type);color* getcolor(color::color_type type) { return NULL; };
};shape* shapefactory::getshape(shape::shape_type type)
{switch (type){case shape::rectangle:return (shape*)new rectangle();case shape::circle:return (shape*)new circle();default:return NULL;}
}//继承抽象工厂的颜色工厂colorfactory
class colorfactory :abstractfactory
{
public:colorfactory() {};virtual ~colorfactory() {};shape* getshape(shape::shape_type type) { return NULL; };color* getcolor(color::color_type type);
};color* colorfactory::getcolor(color::color_type type)
{switch (type){case color::red:return (color*)new red();case color::green:return (color*)new green();default:return NULL;}
}//工厂创造器类factoryproduct,通过传递颜色或形状信息来获取工厂
class factoryproduct
{
public:factoryproduct() {};~factoryproduct() {};abstractfactory* getfactory(abstractfactory::factory_type type);
};abstractfactory* factoryproduct::getfactory(abstractfactory::factory_type type)
{switch (type){case abstractfactory::tshape:return (abstractfactory*)new shapefactory();case abstractfactory::tcolor:return (abstractfactory*)new colorfactory();default:return NULL;}
}#endif
//test.cpp
/****************************************************/
#include <iostream>
#include <string>
#include "AbstractFactory.h"
int main()
{factoryproduct facput;abstractfactory *slfactory = facput.getfactory(abstractfactory::tshape);shape *k1 = slfactory->getshape(shape::rectangle);k1->draw();k1->calculate_area();cout << "area: " << k1->get_area() << endl;shape *k2 = slfactory->getshape(shape::circle);k2->draw();k2->calculate_area();cout << "area: " << k2->get_area() << endl;delete slfactory;slfactory = NULL;delete k1;k1 = NULL;delete k2;k2 = NULL;slfactory = facput.getfactory(abstractfactory::tcolor);color *k3 = slfactory->getcolor(color::red);k3->fill();color *k4 = slfactory->getcolor(color::green);k4->fill();delete slfactory;slfactory = NULL;delete k3;k3 = NULL;delete k4;k4 = NULL;return 0;
}

运行结果
在这里插入图片描述

要点总结

  • 如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的工广完全可以。
  • “系列对象”指的是在某一特定系列下的对象之间有相互依赖、或作用的关系。不同系列的对象之间不能相互依赖。
  • Abstract Factory模式主要在于应对“新系列”的需求变动。其缺点在于难以应对“新对象”的需求变动。
http://www.yayakq.cn/news/752824/

相关文章:

  • 什么网站专做二手名表工业园区网站建设
  • 做门户网站代码质量方面具体需要注意什么昆明网站建设的公司
  • 个人介绍网站模板在线学习平台网站建设有什么功能
  • 安装vs2015网站开发网站自己怎么做
  • 网站项目如何做需求分析网站名称搜索不到
  • 重庆网站建设公司是什么页面设计包括排版嘛
  • 哪有做网站公司尚海整装
  • 郑州app网站公司深入解析wordpress(原书第2版)
  • 广州建网站兴田德润很好做网站的项目开发计划书
  • 百度云wordpress建站深圳高端展位设计公司
  • 大连做网站免费域名cn
  • 部门网站建设方案设计一个简单的广告
  • 百度网站建设推广wechat网页版登陆
  • 杭州高端响应式网站怎样在手机做自己的网站
  • 做分析图很好用的网站发卡网站建设7az
  • 高端购物网站建设加盟项目2023推荐
  • 外管局网站上做预收登记物流公司电话
  • 建筑做网站wordpress视频弹窗
  • 湖南环达公路桥梁建设总公司网站wordpress 运行
  • 湘潭建设网站制作wordpress什么删留言
  • 宁波哪家做网站好学做网站的软件
  • wordpress 采集教程谷歌自建站和优化
  • 网站实名认证 备案由wordpress强力驱动
  • 莱芜网站建设资情况介绍石家庄移动端网站建设
  • 网站建设的论文参考文献wordpress文章行间距
  • 泉州学校网站开发重庆万州网页设计公司
  • 建设部门三类人员官方网站百度统计手机app
  • c 网站开发如何每天10点执行任务做网站需要什么功能
  • 什么是网站流量企业网站seo优化交流
  • 汕头网站设计网站建设信息服务费计入什么科目