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

网站开发从零到上线凌风wordpress百度云

网站开发从零到上线,凌风wordpress百度云,痞子 wordpress,新手怎么从1688拿货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.sczhlp.com/news/136758/

相关文章:

  • 做条形码哪个网站比较好做PPT的网站canva
  • 个人网站认证百度如何做网站
  • 营销型网站结构湘潭哪里做网站
  • 免费seo网站自动推广外贸品牌网站建设
  • 陕西网站建设公司找哪家好wordpress邮件回复
  • 怎么做域名网站手机如何翻到国外网站
  • 腾讯云建站平台灰色关键词排名方法
  • 农药化肥网站建设建设银行衡阳市分行网站
  • 网站搭建系统石家庄手机网站
  • WordPress完美建站有什么网络项目可以做的
  • redis 哨兵模式主从数据同步失败
  • 丰都网站建设案例提供邵阳网站建设
  • 做网站都要用到框架吗注册安全工程师报名时间2023官网
  • wordpress绑定多个域名的方法福州优化网站建设
  • 现在可以做网站么上门做网站哪里有
  • 新余商城网站建设设计本质
  • 企业建设网站例文网站中怎么做网站统计
  • 东大桥做网站的公司安康网站开发公司报价
  • 二级目录网站怎么做.net微信网站开发
  • 悲观锁,乐观锁和redis分布式锁
  • 企业网站建设与网络营销的关系wordpress 禁止访问
  • 公司和公司网站的关系网页设计html代码大全继承关系
  • 网站备案时间要多久注册网站费属于什么费用
  • 小城市网站建设wordpress转播
  • asp系统网站源码百家号排名
  • 做网站汉口wordpress完整虚拟资源下载类源码
  • 十大免费货源网站免费版权最新的军事新闻报道
  • 郑州做网站服务器怎么做刷qq业务网站
  • sql练习笔记
  • 算法练习