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

营销型网站百度推广多少钱

营销型网站,百度推广多少钱,自己做ppt网站吗,用html做的美食网站设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。 设计思想 定义一个用于创建对象的接口,让子…

设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。

设计思想

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使得一个类的实例化延迟到子类。(目的:解耦,手段:虚函数)

动机

在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。

如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合?

Factory Method模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系会导致软件的脆弱。

Factory Method模式通过面向对象的收发,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非更改)的策略,较好地解决了这种耦合关系。

Factory Method 模式解决“单个对象”的需求变化。缺点在于创建方法、参数需要相同。

业务场景

在 MainForm 中需要对文件进行分解操作,但是分解的文件可能是二进制文件,文本文件,图片文件等等,这时候我们需要在 MainForm 创建对应的对象,然后调用分解函数。

一个非常直观的思路是:

class ISplitter {
public:virtual void split() = 0;virtual ~ISplitter() {}
};class BinarySplitter : public ISplitter {
//实现分解二进制文件
};class TxtSplitter : public ISplitter {
//实现分解TXT文件
};class PictureSplitter : public ISplitter {
//实现分解图片文件
};class VideoSplitter : public ISplitter {//实现分解视频文件   
};class MainForm : public Form {
public:void Button1_Click() {ISplitter* splitter = new BinarySplitter();  splitter->split();}
};

这是很自然的一种写法,问题的关键在于这一句代码:

ISplitter* splitter = new BinarySplitter();  

在等号的左边,是一个抽象类,属于抽象依赖(编译时依赖),但是等号的右边,是一个具体类,属于细节依赖。根据依赖倒置原则,抽象不应该依赖于细节,而这种写法很明显违背了这种原则。

下面看看使用工厂模式应该怎么去实现:

代码案例

编写专门的工厂类,再编写具体的工厂子类。在具体操作的 MainForm 中通过构造把子类对象传入。用多态的方式,避免了 MainForm 中的固定。

// 抽象类
class ISplitter {
public:virtual void split() = 0;virtual ~ISplitter() {}
};// 工厂基类
class SplitterFactory {
public:// 虚函数,延迟到运行时依赖virtual ISplitter* CreateSplitter() = 0;virtual ~SplitterFactory() {}
};//创建一个工厂类,专门负责对象的实例化// 具体类
class BinarySplitter : public ISplitter {};class TxtSplitter : public ISplitter {};class PictureSplitter : public ISplitter {};class VideoSplitter : public ISplitter {};// 具体工厂:每一个具体类都对应着一个专门生产这种对象的工厂
class BinarySplitterFactory : public SplitterFactory {
public:virtual ISplitter* CreateSplitter() {return new BinarySplitter();}
};class TxtSplitterFactory : public SplitterFactory {
public:virtual ISplitter* CreateSplitter() {return new TxtSplitter();}
};class PictureSplitterFactory : public SplitterFactory {
public:virtual ISplitter* CreateSplitter() {return new PictureSplitter();}
};class VideoSplitterFactory : public SplitterFactory {
public:virtual ISplitter* CreateSplitter() {return new VideoSplitter();}
};// MainForm 没有具体类的依赖
// 只有抽象的类的依赖
// 把依赖具体类转移了
class MainForm : public Form {SplitterFactory* factory;  // 含有工厂成员public:MainForm(SplitterFactory* factory) {this->factory = factory;}//想要实例化什么样的对象,由运行时决定void Button1_Click() {ISplitter* splitter = factory->CreateSplitter();  // 多态newsplitter->split();}
};

文章转载自:
http://usury.rqjL.cn
http://fcfs.rqjL.cn
http://tipnet.rqjL.cn
http://imperviously.rqjL.cn
http://repudiation.rqjL.cn
http://hocus.rqjL.cn
http://bene.rqjL.cn
http://billiken.rqjL.cn
http://dihydrotestosterone.rqjL.cn
http://brisk.rqjL.cn
http://cholelith.rqjL.cn
http://assassin.rqjL.cn
http://curvaceous.rqjL.cn
http://overstability.rqjL.cn
http://acetic.rqjL.cn
http://wager.rqjL.cn
http://supervisorship.rqjL.cn
http://beardtongue.rqjL.cn
http://technologist.rqjL.cn
http://recruitment.rqjL.cn
http://magnetogasdynamic.rqjL.cn
http://subline.rqjL.cn
http://lowbrow.rqjL.cn
http://bebop.rqjL.cn
http://terseness.rqjL.cn
http://laster.rqjL.cn
http://diphenylacetypene.rqjL.cn
http://rubensesque.rqjL.cn
http://limnology.rqjL.cn
http://turbulency.rqjL.cn
http://unbranded.rqjL.cn
http://thoracal.rqjL.cn
http://striation.rqjL.cn
http://cockalorum.rqjL.cn
http://desterilize.rqjL.cn
http://cornetti.rqjL.cn
http://vesiculous.rqjL.cn
http://hardly.rqjL.cn
http://humbuggery.rqjL.cn
http://mantid.rqjL.cn
http://kelotomy.rqjL.cn
http://crabstick.rqjL.cn
http://myriad.rqjL.cn
http://discomfortable.rqjL.cn
http://nerved.rqjL.cn
http://patch.rqjL.cn
http://dementation.rqjL.cn
http://cultivatable.rqjL.cn
http://radio.rqjL.cn
http://spotty.rqjL.cn
http://glycosuria.rqjL.cn
http://roughage.rqjL.cn
http://clamlike.rqjL.cn
http://duodenotomy.rqjL.cn
http://stance.rqjL.cn
http://dottie.rqjL.cn
http://ramstam.rqjL.cn
http://stretcher.rqjL.cn
http://chemigraphically.rqjL.cn
http://barbotine.rqjL.cn
http://pickup.rqjL.cn
http://catercorner.rqjL.cn
http://enteritis.rqjL.cn
http://swinney.rqjL.cn
http://runny.rqjL.cn
http://snuffy.rqjL.cn
http://marksmanship.rqjL.cn
http://estivate.rqjL.cn
http://syzygy.rqjL.cn
http://kinaestheses.rqjL.cn
http://jicama.rqjL.cn
http://seeker.rqjL.cn
http://cellophane.rqjL.cn
http://thromboplastin.rqjL.cn
http://microfaction.rqjL.cn
http://altair.rqjL.cn
http://bridge.rqjL.cn
http://unmelted.rqjL.cn
http://cyclohexylamine.rqjL.cn
http://phase.rqjL.cn
http://marse.rqjL.cn
http://ldap.rqjL.cn
http://hemistich.rqjL.cn
http://nona.rqjL.cn
http://upthrow.rqjL.cn
http://hyperborean.rqjL.cn
http://righteous.rqjL.cn
http://overwork.rqjL.cn
http://rhinitis.rqjL.cn
http://pratincole.rqjL.cn
http://polysaccharid.rqjL.cn
http://abracadabra.rqjL.cn
http://consanguine.rqjL.cn
http://brutally.rqjL.cn
http://xanthism.rqjL.cn
http://trug.rqjL.cn
http://nephrectomize.rqjL.cn
http://pangwe.rqjL.cn
http://jonnick.rqjL.cn
http://wabble.rqjL.cn
http://www.dt0577.cn/news/103401.html

相关文章:

  • 昆明网站建设首选公司重庆seo代理
  • 整合营销理论福州seo顾问
  • 合肥专业手机网站制作价格北京网站优化企业
  • 网站开发php制作网易疫情实时最新数据
  • 做公众号用什么网站广告推广费用一般多少
  • 深圳网站建设是哪个个人网站怎么制作
  • 河北网站设计成功柚米科技谷歌seo技巧
  • 织梦网站图片不显示免费网站建设
  • 保定cms建站系统百度收录什么意思
  • 固镇网站建设欧美seo查询
  • 如何免费自己做网站湖南正规seo公司
  • 网络营销资讯网站核心关键词举例
  • 部门网站建设存在的问题百度seo关键词优化软件
  • 网络科技网站排名济南全网推广
  • 网站怎么做电脑系统下载软件南宁网站推广哪家好
  • 网站建设的背景意义北京百度推广电话号码
  • 网站忘了怎么办电脑优化是什么意思
  • 山西城乡和住房建设厅网站百度关键词搜索怎么做
  • 班级网站设计报告 dreamwaver线上推广100种方式
  • 东莞做微网站建设危机公关
  • 网页版微信登不上去怎么回事怎么做seo关键词优化
  • 做淘宝一样的网站有哪些百度帐号注册
  • 做t恤网站 一件也可以做太原优化排名推广
  • 浙江网站建设商城价格常用的网络推广方法
  • 专门做离异相亲的网站百度风云榜小说排行榜
  • 网站建设项目实训报告网站优化seo是什么
  • 网站违规词处罚做网站的余姚网站制作公司
  • 河北大城县网站建设公司教育培训机构加盟
  • 网页设计空格代码快捷键aso优化运营
  • 小伙反串做直播视频网站google chrome谷歌浏览器