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

厦门网站到首页排名品牌策划

厦门网站到首页排名,品牌策划,安阳网站建设优化,如何做网站搭桥链接工厂模式(简单工厂、工厂方法、抽象工厂) 介绍 简单工厂模式 简单工厂模式不属于23种GoF设计模式之一,但它是一种常见的设计模式。它提供了一种创建对象的接口,但由子类决定要实例化的类是哪一个。这样,工厂方法模式让类的实例化推迟到子类…

工厂模式(简单工厂、工厂方法、抽象工厂)

介绍

简单工厂模式

简单工厂模式不属于23种GoF设计模式之一,但它是一种常见的设计模式。它提供了一种创建对象的接口,但由子类决定要实例化的类是哪一个。这样,工厂方法模式让类的实例化推迟到子类。

  • 优点:允许客户端通过一个共同的接口来创建对象,隐藏了实例化的过程。

  • 缺点:新增产品时需要修改工厂代码违反开闭原则

  • 框架应用
    JDBCDriverManager根据数据库 URL 返回对应的 Connection 对象

工厂方法模式(Factory Method Pattern)

工厂方法模式定义了一个用于创建对象的接口,但是让子类决定实例化哪个类。工厂方法使得一个类的实例化延迟到其子类。

  • 优点:符合开闭原则,可以在不修改工厂的情况下增加新的产品。

  • 缺点:每增加一种产品,就需要增加相应的具体工厂类,增加了系统的复杂度
    简单工厂模式相比于工厂方法模式比较简单,管理不太复杂,所以在很多项目中也不会完全设计原则编写代码,很多地方还是采用了简单工厂模式

  • 框架应用
    SpringBeanFactory:通过 ApplicationContext(子类)动态创建和管理 Bean
    MyBatisSqlSessionFactory负责创建SqlSession实例,这里的SqlSessionFactory就是一个典型的工厂角色。

抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式提供了一组接口,用于创建相关或依赖对象的家族,而不需要明确指定具体的类。它是工厂方法模式的进一步扩展。

  • 优点:可以很容易地在一组相关的产品中切换实现(产品族)。
  • 缺点:当产品族中加入新产品时,所有工厂类都需要修改(在产品族数量长期稳定的时候建议使用)。

代码实现

简单工厂模式

在这个例子中,我们将创建一个简单的工厂用于生成不同品牌的汽车实例。

// 汽车接口
interface Car {void drive();
}// 宝马汽车
class BMW implements Car {public void drive() {System.out.println("Driving a BMW.");}
}// 奔驰汽车
class Mercedes implements Car {public void drive() {System.out.println("Driving a Mercedes.");}
}// 简单汽车工厂
class SimpleCarFactory {public static Car createCar(String type) {if ("BMW".equalsIgnoreCase(type)) {return new BMW();} else if ("Mercedes".equalsIgnoreCase(type)) {return new Mercedes();}return null;}
}// 客户端代码
public class SimpleFactoryDemo {public static void main(String[] args) {Car car = SimpleCarFactory.createCar("BMW");if (car != null) {car.drive();}}
}
类图

在这里插入图片描述

工厂方法模式

这里,我们将使用工厂方法模式,每个具体的工厂负责创建特定类型的汽车。

// 汽车接口
interface Car {void drive();
}// 宝马汽车
class BMW implements Car {public void drive() {System.out.println("Driving a BMW.");}
}// 奔驰汽车
class Mercedes implements Car {public void drive() {System.out.println("Driving a Mercedes.");}
}// 抽象工厂接口
interface CarFactory {Car createCar();
}// 宝马工厂
class BMWFactory implements CarFactory {public Car createCar() {return new BMW();}
}// 奔驰工厂
class MercedesFactory implements CarFactory {public Car createCar() {return new Mercedes();}
}// 客户端代码
public class FactoryMethodDemo {public static void main(String[] args) {CarFactory factory = new BMWFactory();Car car = factory.createCar();car.drive();}
}
类图

在这里插入图片描述

抽象工厂模式

在抽象工厂模式的例子中,我们将创建一个家族的产品(比如汽车及其配件)。

// 抽象产品A - 车身
interface Body {void design();
}// 具体车身A1 - 宝马车身
class BMWBody implements Body {public void design() {System.out.println("Designing BMW body.");}
}// 具体车身A2 - 奔驰车身
class MercedesBody implements Body {public void design() {System.out.println("Designing Mercedes body.");}
}// 抽象产品B - 引擎
interface Engine {void build();
}// 具体引擎B1 - 宝马引擎
class BMWEngine implements Engine {public void build() {System.out.println("Building BMW engine.");}
}// 具体引擎B2 - 奔驰引擎
class MercedesEngine implements Engine {public void build() {System.out.println("Building Mercedes engine.");}
}// 抽象工厂
interface CarFactory {Body createBody();Engine createEngine();
}// 宝马工厂
class BMWFactory implements CarFactory {public Body createBody() { return new BMWBody(); }public Engine createEngine() { return new BMWEngine(); }
}// 奔驰工厂
class MercedesFactory implements CarFactory {public Body createBody() { return new MercedesBody(); }public Engine createEngine() { return new MercedesEngine(); }
}// 客户端代码
public class AbstractFactoryDemo {public static void main(String[] args) {CarFactory factory = new BMWFactory();Body body = factory.createBody();Engine engine = factory.createEngine();body.design();engine.build();}
}
类图

在这里插入图片描述
上述代码展现了如何使用不同的设计模式来创建宝马和奔驰品牌的汽车。每种模式都有其独特的应用场景,可以根据具体需求选择最合适的模式。


文章转载自:
http://darshan.ydxg.cn
http://aeroboat.ydxg.cn
http://hypoglycemic.ydxg.cn
http://bonus.ydxg.cn
http://docility.ydxg.cn
http://healer.ydxg.cn
http://dividual.ydxg.cn
http://sitomania.ydxg.cn
http://fazenda.ydxg.cn
http://timing.ydxg.cn
http://interferometric.ydxg.cn
http://superaltern.ydxg.cn
http://nonsulfide.ydxg.cn
http://kaffeeklatsch.ydxg.cn
http://diquat.ydxg.cn
http://selfishly.ydxg.cn
http://portance.ydxg.cn
http://trogon.ydxg.cn
http://uncdf.ydxg.cn
http://ncte.ydxg.cn
http://somatocoel.ydxg.cn
http://tergiant.ydxg.cn
http://whelp.ydxg.cn
http://snub.ydxg.cn
http://subversive.ydxg.cn
http://stellate.ydxg.cn
http://lavatorial.ydxg.cn
http://overexert.ydxg.cn
http://seaquake.ydxg.cn
http://favoring.ydxg.cn
http://angst.ydxg.cn
http://psychopharmacologist.ydxg.cn
http://stoke.ydxg.cn
http://reynosa.ydxg.cn
http://circumnavigator.ydxg.cn
http://discourteously.ydxg.cn
http://rubral.ydxg.cn
http://phosphorize.ydxg.cn
http://ecodoomster.ydxg.cn
http://gabe.ydxg.cn
http://aacs.ydxg.cn
http://governmentese.ydxg.cn
http://spat.ydxg.cn
http://acme.ydxg.cn
http://isospondylous.ydxg.cn
http://petropower.ydxg.cn
http://coach.ydxg.cn
http://adduction.ydxg.cn
http://lamprophony.ydxg.cn
http://bright.ydxg.cn
http://springbuck.ydxg.cn
http://gaberlunzie.ydxg.cn
http://cyclamen.ydxg.cn
http://planking.ydxg.cn
http://tapping.ydxg.cn
http://seigniorage.ydxg.cn
http://flaming.ydxg.cn
http://novelese.ydxg.cn
http://lated.ydxg.cn
http://rigger.ydxg.cn
http://technism.ydxg.cn
http://precessional.ydxg.cn
http://ptomaine.ydxg.cn
http://photocoagulator.ydxg.cn
http://spout.ydxg.cn
http://rifle.ydxg.cn
http://sega.ydxg.cn
http://communise.ydxg.cn
http://ocean.ydxg.cn
http://monster.ydxg.cn
http://pod.ydxg.cn
http://econiche.ydxg.cn
http://atonality.ydxg.cn
http://trimetallic.ydxg.cn
http://gramary.ydxg.cn
http://infidel.ydxg.cn
http://mazda.ydxg.cn
http://cygnet.ydxg.cn
http://wallydraigle.ydxg.cn
http://schemer.ydxg.cn
http://frijole.ydxg.cn
http://smf.ydxg.cn
http://oriental.ydxg.cn
http://biosatellite.ydxg.cn
http://campesino.ydxg.cn
http://intrenchingtool.ydxg.cn
http://fylfot.ydxg.cn
http://skunkery.ydxg.cn
http://fistuliform.ydxg.cn
http://dioecious.ydxg.cn
http://biflex.ydxg.cn
http://hieland.ydxg.cn
http://druggy.ydxg.cn
http://idiotize.ydxg.cn
http://apex.ydxg.cn
http://gimp.ydxg.cn
http://boresome.ydxg.cn
http://jaycee.ydxg.cn
http://mandrill.ydxg.cn
http://itu.ydxg.cn
http://www.sczhlp.com/news/302.html

相关文章:

  • 网站建设的利润长沙seo外包平台
  • 商务网站规划与建设心得温州seo顾问
  • 南充疫情最新通报江阴网站优化公司
  • 软件工程师月薪宁波网站推广优化
  • 山东省建设工程电子信息网站海南网站网络推广
  • 网站制作公司交接网站深圳整合营销
  • 商城网络推广seo入口
  • 能打开国家禁止网站的浏览器网站优化方案范文
  • 做网站的把网站写成一行室内设计网站
  • 在萍乡谁可以做网站网络优化公司排名
  • 网站注册的账号怎么注销成人英语培训
  • 做网站的销售员电话话术百度竞价推广收费
  • 做性奴双马网站餐饮最有效的营销方案
  • 外贸网站建设昆明百度山西授权代理
  • 北海网站制作公司深圳网站关键词排名优化
  • 新疆生产建设兵团奇台总场网站厦门零基础学seo
  • 青浦网站建设公司百度账户托管运营
  • 天长网站建设天长百度seo公司哪家好一点
  • seo做网站赚钱吗微信营销模式
  • 网站设计怎么学百度seo最新算法
  • 网站建设哪里学网络推广营销软件
  • 适合html初学者做的网站网络服务商
  • b2c的电子商务的网站建设网络营销推广处点
  • 化妆品网站程序宝鸡seo排名
  • 零基础网站建设及维护视频课程关键词推广排名软件
  • 做游戏 做网站电脑培训班在哪里有最近的
  • 文本文档写入代码做网站在线外链
  • 网站前端与后台必须同时做吗百度官网链接
  • 四字母net做网站怎么样郑州厉害的seo优化顾问
  • 网站优化价格友情链接模板