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

怎么把做的网站上传到网络百度关键词搜索排行

怎么把做的网站上传到网络,百度关键词搜索排行,天元建设集团有限公司安全管理制度,app定制开发运营推广方案引言:除了使用new操作符之外,还有更多制造对象的方法。同时,实例化这个活动不应该总是公开地进行。 1.简单工厂模式 这里有一些相关的具体类,要在运行时有一些具体条件来决定究竟实例化哪个类。这样的代码(if..elseif…

引言:除了使用new操作符之外,还有更多制造对象的方法。同时,实例化这个活动不应该总是公开地进行。

1.简单工厂模式

这里有一些相关的具体类,要在运行时有一些具体条件来决定究竟实例化哪个类。这样的代码(if..elseif..elseif),一旦有变化或扩展,就必须重新打开进行检查和修改。

Pizza orderPizza(String type)
{Pizza pizza;if (type.equals("cheese")){pizza = new CheesePizza();}else if (type.equals("greek")){pizza = new GreekPizza();}else if (type.equals("pepperoni")){pizza = new PepperoniPizza();}pizza.prepare();pizza.bake();pizza.cut();pizza.box();return pizza;}

我们知道其中的if..elseif..elseif代码部分会改变,因此,我们阔以将创建pizza的代码移到一个专职创建pizza的对象中去。这个新对象就叫做“工厂”,一旦有了SimplePizzaFactory,orderPizza就变成了此对象的客户。

SimplePizzaFactory可以有多个客户,并且需要修改时,只需要修改这个类即可。

(利用静态方法定义一个简单的工厂,被称为静态工厂。它不能通过继承来改变创建方法的行为)

class SimplePizzaFactory
{
public:Pizza createPizza(String type){Pizza* pizza = nullptr;if (type.equals("cheese")){pizza = new CheesePizza();}else if (type.equals("greek")){pizza = new GreekPizza();}else if (type.equals("pepperoni")){pizza = new PepperoniPizza();}return pizza;}
class PizzaStore()
{
private:SimplePizzaFactory* factory;public:PizzaStore(SimplePizzaFactory* factory){this->factory = factory;}Pizza orderPizza(String type){// 使用工厂对象的创建方法替换new操作符Pizza* pizza = factory->createPizza();pizza->prepare();pizza->bake();pizza->cut();pizza->box();return pizza;}
}

简单工厂其实并不是一种设计模式,反而像一种编程习惯。

 

2.工厂方法

由于Pizza店生意火爆,需要连锁模式加盟,这个时候该怎么做呢?

利用SimplePizzaFactory写出三种不同的工厂,如NYPizzaFactory。

NYPizzaFactory* nyFactory = new NYPizzaFactory();
PizzaStore* nyStore = new PizzaStore(nyFactory);
nyStore->orderPizza("Veggie");

但你发现,加盟店虽然是用你的工厂创建Pizza,但是流程却不一样,他们不切片,或者使用其它厂商的盒子。因此,你希望支持他们的操作,把加盟店和创建Pizza捆绑在一起的同时,又保持一定的弹性(之前制作Pizza的代码绑定在PizzaStore里,大家都一样,没有弹性)。

(这里我没理解原文,开始说不切片、不用相同盒子,为了支持这个操作,除了把createPizza做成抽象方法,还应该把prepare, bake这个方法也封装成一个抽象方法才对)

因此,我们重新将createPizza方法放到PizzaStore,并将其设置为“抽象方法”,最后为每个区域创建一个PizzaStore的子类。

class PizzaStore()
{
public:Pizza orderPizza(String type){Pizza pizza = createPizza();pizza->prepare();pizza->bake();pizza->cut();pizza->box();return pizza;}Pizza createPizza(String type) = 0;
}

现在拥有PizzaStore作为超类,NYPizzaStore等只需继承它,自行决定如何制造Pizza。同时,PizzaStore已经有一个不错的订单系统,我们希望不同加盟商都用这个系统,因此,我们把orderPizza直接在超类中实现。子类负责createPizza方法(允许子类做决定)。

由于Pizza是抽象的,orderPizza()并不知道哪些具体类参与,这就是解耦。

(原本由一个对象负责所有具体类的实例化,现在通过对PizzaStore做一些小转变,变成由一群子类负责实例化)

工厂方法模式通过让子类决定该创建的对象是什么,来达到对象创建过程封装的目的。

 依赖倒置原则:要依赖抽象,不要依赖具体类(当你实例化一个类的时候,就是在依赖它的具体类)。这个原则说明了:不能让高层组件依赖底层组件,而且,不论高层或者底层组件,两者都应该依赖于抽象。

若你在orderPizza方法中写出下面这样的代码:

 

上面代码问题在于,它依赖每个Pizza类型,因为他在orderPizza里面,实例化了这个具体类型。虽然我们由了一个抽象Pizza,但我们在代码中创建了具体的Pizza,所有这个抽象没什么用。而使用工厂方法可以解决这个问题。

 

 你可以注意到,底层组件竟然在依赖高层的抽象,这就是依赖倒置。

http://www.khdw.cn/news/11550.html

相关文章:

  • 哈尔滨网站设计联系方式北京网站推广机构
  • 武汉做网站选华企加速器长沙sem培训
  • 做微信的网站有哪些功能吗seo网站优化软件价格
  • 视频直播网站建设方案sem优化师是做什么的
  • 济南做网站xywlcn中央新闻联播
  • 网站建设报价51外链代发网
  • wordpress 如何修改主图css宁波seo软件
  • wordpress建站费用旺道seo
  • 南宁黄页电话号码查询抖音seo怎么做
  • 石家庄专业网站营销网站seo链接购买
  • 网站二级目录怎么做301seo科技网
  • 政府网站内容建设规范新闻稿发布软文平台
  • 做暧视频网站大全百度信息流推广和搜索推广
  • 武汉专业做网站热搜榜排名今日
  • 网站栏目的分类济南专业seo推广公司
  • asp网站跳转浏览器网站排名系统
  • 彩票网站开发租用加速游戏流畅的软件
  • 找人做一个网站多少钱缅甸新闻最新消息
  • 专业的营销型网站建设nba最新赛程
  • 高邑做网站网络游戏营销策略
  • 可以做仿真实验的网站网站快速优化排名排名
  • 网站开发项目需求拼多多代运营公司十大排名
  • wordpress添加描述关键词深圳知名seo公司
  • 石景山网站建设公司开发设计推荐
  • 怎么查公司网站可信度百度合作平台
  • 深圳网站开发外包哪家好微信怎么推广自己的产品
  • 都哪些网站可以做gif南京搜索引擎推广优化
  • 一个网络空间做两个网站google关键词搜索量
  • WordPress说说主题seo是什么岗位
  • 江苏网站建设怎么样seo关键词快速排名前三位