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

智鼎互联网站建设游戏推广员上班靠谱吗

智鼎互联网站建设,游戏推广员上班靠谱吗,flask做的网站,html做的网站怎么弄Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对 象的接口,而无须指定它们的具体类。 之前写过简单工厂和工厂方法模式(创建型模式),这两种模式比较简单。 简单工厂模式其实不符合开闭原则,即对修改关闭…

        Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对
象的接口,而无须指定它们的具体类。

       之前写过简单工厂和工厂方法模式(创建型模式),这两种模式比较简单。

       简单工厂模式其实不符合开闭原则,即对修改关闭,扩展开放。简单工厂每次需要新增新的产品就需要修改工厂类。而工厂方法模式,每个工厂只负责创建单一的产品,相当于真实工厂里面的一条流水线,如果一个工厂自身能创建多个产品呢?那就需要抽象工厂了。

      三种工厂模式的区别:

      简单工厂模式:一个抽象产品类(或接口),可以派生出多个具体产品类。 
                               只有一个静态工厂,负责创建多个具体产品类的实例。
      工厂方法模式:一个抽象产品类(或接口),可以派生出多个具体产品类。   
                               一个抽象工厂类(或接口),可以派生出多个具体工厂类。   
                               每个具体工厂类只能创建一个具体产品类的实例。  
      抽象工厂模式:多个抽象产品类(或接口),可以派生出多个具体产品类。   
                               一个抽象工厂类(或接口),可以派生出多个具体工厂类。   
                               每个具体工厂类可以创建多个具体产品类的实例。   
   
区别:工厂方法模式只有一个抽象产品类(或接口),而抽象工厂模式有多个。   
      工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。


“抽象工厂”就像真的工厂,“工厂方法”就像工厂中的一条生产线。

抽象工厂模式Demo:

先看类图:

工程结构:

上代码:

package com.figo.study2024.pattern.abstractfactory;/*** @ClassName:Fruit* @PackageName:com.figo.study2024.pattern.abstractfactory* @Description:水果接口* @Date:2024/3/8 10:25* @Author:figo*/
public interface Fruit {//采摘void pick();
}package com.figo.study2024.pattern.abstractfactory;/*** @ClassName:Apple* @PackageName:com.figo.study2024.pattern.abstractfactory* @Description:苹果产品* @Date:2024/3/8 10:32* @Author:figo*/
public class Apple implements Fruit{@Overridepublic void pick() {System.out.println("采摘苹果");}
}package com.figo.study2024.pattern.abstractfactory;/*** @ClassName:Banana* @PackageName:com.figo.study2024.pattern.abstractfactory* @Description:香蕉产品* @Date:2024/3/8 10:35* @Author:figo*/
public class Banana implements Fruit{@Overridepublic void pick() {System.out.println("采摘香蕉");}
}package com.figo.study2024.pattern.abstractfactory;/*** @ClassName:Bag* @PackageName:com.figo.study2024.pattern.abstractfactory* @Description:包装盒接口* @Date:2024/3/8 10:36* @Author:figo*/
public interface Bag {//打包void pack(Fruit fruit);
}package com.figo.study2024.pattern.abstractfactory;/*** @ClassName:AppleBag* @PackageName:com.figo.study2024.pattern.abstractfactory* @Description:苹果包装盒* @Date:2024/3/8 10:37* @Author:figo*/
public class AppleBag implements Bag{@Overridepublic void pack(Fruit fruit) {System.out.println("苹果盒打包苹果");}
}package com.figo.study2024.pattern.abstractfactory;/*** @ClassName:BananaBag* @PackageName:com.figo.study2024.pattern.abstractfactory* @Description:香蕉包装盒* @Date:2024/3/8 10:37* @Author:figo*/
public class BananaBag implements Bag{@Overridepublic void pack(Fruit fruit) {System.out.println("香蕉盒打包苹果");}
}package com.figo.study2024.pattern.abstractfactory;/*** @ClassName:AbstractFactory* @PackageName:com.figo.study2024.pattern.abstractfactory* @Description:抽象工厂,能生产多种产品,比工厂方法模式只能生产单一产品更强* @Date:2024/3/8 10:42* @Author:figo*/
public abstract class AbstractFactory {public abstract  Fruit getFruit();public abstract Bag getBag();
}package com.figo.study2024.pattern.abstractfactory;/*** @ClassName:AppleFactory* @PackageName:com.figo.study2024.pattern.abstractfactory* @Description:苹果工厂能生产苹果和苹果包装盒* @Date:2024/3/8 10:46* @Author:figo*/
public class AppleFactory extends AbstractFactory{@Overridepublic Fruit getFruit() {return new Apple();}@Overridepublic Bag getBag() {return new AppleBag();}
}package com.figo.study2024.pattern.abstractfactory;/*** @ClassName:BananaFactory* @PackageName:com.figo.study2024.pattern.abstractfactory* @Description:香蕉工厂,能生产香蕉也能生产香蕉包装盒* @Date:2024/3/8 10:49* @Author:figo*/
public class BananaFactory extends AbstractFactory{@Overridepublic Fruit getFruit() {return new Banana();}@Overridepublic Bag getBag() {return new BananaBag();}
}package com.figo.study2024.pattern.abstractfactory;/*** @ClassName:FruitGardenClient* @PackageName:com.figo.study2024.pattern.abstractfactory* @Description:水果园客户端,测试抽象工厂模式* @Date:2024/3/8 10:51* @Author:figo*/
public class FruitGardenClient {public static void main(String[] args) {fruitOrder();}/*** 水果订单*/public static void fruitOrder(){//初始化工厂AbstractFactory factory = new AppleFactory();//spring使用注入方式,这里测试苹果工厂//苹果工厂能生产苹果Fruit fruit = factory.getFruit();fruit.pick();//苹果工厂也能生产包装盒Bag bag = factory.getBag();bag.pack(fruit);//以下物流运输业务。。。。}
}

http://www.hkea.cn/news/147210/

相关文章:

  • 网站开发的目的和意义重庆seo排名电话
  • 顺义专业建站公司最有效的线上推广方式
  • 大连网站网站搭建制作百度识图 上传图片
  • 给人做网站多少钱黑科技引流推广神器怎么下载
  • 沈阳做网站最好的公司百度快照怎么删除
  • 设置本机外网ip做网站网站免费制作平台
  • 有什么推荐做简历的网站2024的新闻有哪些
  • 申请做网站 论坛版主惠州seo外包服务
  • 网站照片上传不了域名解析ip
  • 胖小七网站建设2022最新国际新闻10条简短
  • wordpress 网站备份厦门seo外包服务
  • 网站建设及推广培训杭州百度快照优化排名
  • 简单手机网站开发软件关键词排名代发
  • visio画网站开发类图注册域名后怎么建网站
  • 道里网站运营培训北京网络营销咨询公司
  • 目前做网站流行的语言seo关键词排名优化哪家好
  • 长沙营销型网站制作费用seo图片优化
  • 学生诚信档案建设网站seo数据分析
  • 北京住房城乡建设厅网站首页1688官网入口
  • 网站建设需要懂什么软件徐州百度seo排名优化
  • wordpress网站样式网站排名查询
  • 郑州网站建设推销外贸网站推广与优化
  • 当当网站开发系统说明搜索引擎排名google
  • 国外男女直接做的视频网站企业邮箱登录入口
  • 成都可以做网站的公司百度手机助手最新版下载
  • 赤峰网站建设招聘市场营销互联网营销
  • 网站开发后端需要哪些技术友情链接检索数据分析
  • 金华竞价排名 金华企业网站建设常见的网络营销平台有哪些
  • p2p网站开发关键词seo是什么意思
  • 自己免费怎么制作网站合肥今天的最新消息