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

保定网站排名网站建设管理策划书

保定网站排名,网站建设管理策划书,如何部署wordpress,流量主广告点击自助平台工厂模式基础概念 工厂模式是一种创建型设计模式,其核心思想是将对象的创建和使用分离。通过使用工厂模式,可以将对象创建逻辑集中管理,提高代码的可维护性和可扩展性。在 Java 中,工厂模式主要分为三种类型: 简单工…

工厂模式基础概念

工厂模式是一种创建型设计模式,其核心思想是将对象的创建和使用分离。通过使用工厂模式,可以将对象创建逻辑集中管理,提高代码的可维护性和可扩展性。在 Java 中,工厂模式主要分为三种类型:

  1. 简单工厂模式 - 基础实现,不属于 GOF 23 种设计模式
  2. 工厂方法模式 - 定义创建对象的接口,由子类决定实例化哪个类
  3. 抽象工厂模式 - 创建一系列相关或依赖对象的接口,无需指定具体类

简单工厂模式

简单工厂模式是工厂模式的基础实现,它定义了一个创建对象的类,根据参数的不同返回不同类的实例。

示例代码
// 产品接口
interface Product {void operation();
}// 具体产品类A
class ConcreteProductA implements Product {@Overridepublic void operation() {System.out.println("ConcreteProductA operation");}
}// 具体产品类B
class ConcreteProductB implements Product {@Overridepublic void operation() {System.out.println("ConcreteProductB operation");}
}// 简单工厂类
class SimpleFactory {public static Product createProduct(String type) {switch (type) {case "A":return new ConcreteProductA();case "B":return new ConcreteProductB();default:throw new IllegalArgumentException("Invalid product type: " + type);}}
}// 客户端代码
public class SimpleFactoryClient {public static void main(String[] args) {Product productA = SimpleFactory.createProduct("A");productA.operation(); // 输出: ConcreteProductA operationProduct productB = SimpleFactory.createProduct("B");productB.operation(); // 输出: ConcreteProductB operation}
}

优点:实现简单,将对象创建和使用分离
缺点:工厂类职责过重,不符合开闭原则(新增产品需修改工厂类)

工厂方法模式

工厂方法模式定义了一个创建对象的接口,让子类决定实例化哪个类。工厂方法将类的实例化延迟到子类。

示例代码
// 产品接口
interface Product {void operation();
}// 具体产品类A
class ConcreteProductA implements Product {@Overridepublic void operation() {System.out.println("ConcreteProductA operation");}
}// 具体产品类B
class ConcreteProductB implements Product {@Overridepublic void operation() {System.out.println("ConcreteProductB operation");}
}// 抽象工厂类
abstract class Factory {public abstract Product createProduct();
}// 具体工厂类A - 生产产品A
class ConcreteFactoryA extends Factory {@Overridepublic Product createProduct() {return new ConcreteProductA();}
}// 具体工厂类B - 生产产品B
class ConcreteFactoryB extends Factory {@Overridepublic Product createProduct() {return new ConcreteProductB();}
}// 客户端代码
public class FactoryMethodClient {public static void main(String[] args) {Factory factoryA = new ConcreteFactoryA();Product productA = factoryA.createProduct();productA.operation(); // 输出: ConcreteProductA operationFactory factoryB = new ConcreteFactoryB();Product productB = factoryB.createProduct();productB.operation(); // 输出: ConcreteProductB operation}
}

优点:符合开闭原则,扩展性好
缺点:类的数量可能过多,增加系统复杂度

抽象工厂模式

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

示例代码
// 产品A接口
interface ProductA {void operationA();
}// 产品B接口
interface ProductB {void operationB();
}// 具体产品A1
class ConcreteProductA1 implements ProductA {@Overridepublic void operationA() {System.out.println("ConcreteProductA1 operationA");}
}// 具体产品A2
class ConcreteProductA2 implements ProductA {@Overridepublic void operationA() {System.out.println("ConcreteProductA2 operationA");}
}// 具体产品B1
class ConcreteProductB1 implements ProductB {@Overridepublic void operationB() {System.out.println("ConcreteProductB1 operationB");}
}// 具体产品B2
class ConcreteProductB2 implements ProductB {@Overridepublic void operationB() {System.out.println("ConcreteProductB2 operationB");}
}// 抽象工厂接口
interface AbstractFactory {ProductA createProductA();ProductB createProductB();
}// 具体工厂1 - 生产产品A1和产品B1
class ConcreteFactory1 implements AbstractFactory {@Overridepublic ProductA createProductA() {return new ConcreteProductA1();}@Overridepublic ProductB createProductB() {return new ConcreteProductB1();}
}// 具体工厂2 - 生产产品A2和产品B2
class ConcreteFactory2 implements AbstractFactory {@Overridepublic ProductA createProductA() {return new ConcreteProductA2();}@Overridepublic ProductB createProductB() {return new ConcreteProductB2();}
}// 客户端代码
public class AbstractFactoryClient {public static void main(String[] args) {// 使用工厂1创建产品族1AbstractFactory factory1 = new ConcreteFactory1();ProductA productA1 = factory1.createProductA();ProductB productB1 = factory1.createProductB();productA1.operationA(); // 输出: ConcreteProductA1 operationAproductB1.operationB(); // 输出: ConcreteProductB1 operationB// 使用工厂2创建产品族2AbstractFactory factory2 = new ConcreteFactory2();ProductA productA2 = factory2.createProductA();ProductB productB2 = factory2.createProductB();productA2.operationA(); // 输出: ConcreteProductA2 operationAproductB2.operationB(); // 输出: ConcreteProductB2 operationB}
}

优点

  • 可以在类的内部对产品族中相关联的多等级产品共同管理
  • 客户端始终只使用一个工厂的对象
  • 符合开闭原则

缺点

  • 产品族扩展困难(新增一个产品需要修改多个接口和类)
  • 实现复杂

三种工厂模式的对比

类型工厂职责产品等级结构扩展性
简单工厂模式集中所有产品创建单一等级不符合开闭原则
工厂方法模式由子类负责创建单一等级符合开闭原则
抽象工厂模式创建一系列产品多个等级(产品族)产品族扩展困难

工厂模式的应用场景

  1. 对象创建逻辑复杂 - 当对象创建过程涉及复杂的初始化逻辑时
  2. 根据条件动态创建对象 - 如根据配置或用户输入创建不同类型的对象
  3. 产品等级结构管理 - 当系统需要处理多个产品族时

注意事项

  1. 避免过度使用 - 简单场景下无需使用工厂模式
  2. 权衡设计复杂度 - 选择合适的工厂模式类型
  3. 与其他模式结合 - 工厂模式常与单例模式、策略模式等结合使用

工厂模式是一种非常实用的设计模式,它能够将对象的创建和使用分离,提高代码的可维护性和可扩展性。在实际应用中,需要根据具体场景选择合适的工厂模式实现。


文章转载自:

http://ZhNcfM0n.nqwkn.cn
http://tgE0UHo7.nqwkn.cn
http://TiYX6KYg.nqwkn.cn
http://E560ailR.nqwkn.cn
http://Xw0fqtlj.nqwkn.cn
http://njL59O8u.nqwkn.cn
http://ec8HtlpU.nqwkn.cn
http://MpIrZ2AI.nqwkn.cn
http://RYjMV60B.nqwkn.cn
http://d5eNeiBl.nqwkn.cn
http://rOlV9bNQ.nqwkn.cn
http://EJGTbc9t.nqwkn.cn
http://wN4RepZC.nqwkn.cn
http://Mjj38v6O.nqwkn.cn
http://HAwCeWOZ.nqwkn.cn
http://mqTDnFyA.nqwkn.cn
http://lwRuqSj0.nqwkn.cn
http://3CZ9Xi8B.nqwkn.cn
http://tklRTNNU.nqwkn.cn
http://eZtp9VmD.nqwkn.cn
http://dzKjI3Tp.nqwkn.cn
http://5OT32BVY.nqwkn.cn
http://57AFtQYl.nqwkn.cn
http://IS9Rbn1c.nqwkn.cn
http://Re82dBgo.nqwkn.cn
http://VJ5VSg6S.nqwkn.cn
http://BTm8sU0H.nqwkn.cn
http://1UOPUqOv.nqwkn.cn
http://e7y0y6hB.nqwkn.cn
http://QiFVk6fU.nqwkn.cn
http://www.dtcms.com/wzjs/659245.html

相关文章:

  • 深圳宝安区有几个街道厦门市做网站优化
  • 企业网站的网址通常包括asp旅游网站模板下载
  • 网站设计建设合同是wordpress 替换主题
  • 保险网站程序源码做网站用html还是php
  • 我想找个做代理的网站推动门户网站建设不断优化升级
  • 哪个网站做图片外链城镇建设周刊网站
  • 微信导购网站怎么做视频教学备案 通过后 网站打不开
  • 网站建设百灵鸟优化wordpress分类页面空白
  • 网站建设欣赏上海公司注册商标流程及费用
  • 网站管理公司排名wordpress gallery
  • 网站搜索功能怎么实现长沙网站关键词优化
  • 公司介绍网站源码构建一个网站需要多少钱
  • wordpress建立手机网站做视频网站要什么
  • 福建省住建厅建设网站软件app开发需要多少钱
  • 电子商务网站建设概述台州公司网站建设
  • 找人做网站域名怎么过户企业建站的目的是什么
  • 企业营销系统和网站建设WordPress编辑器过滤
  • 网站建设标题怎么查看网站死链
  • 帮企业做网站赚钱怎么制作微信链接
  • 郑州网站建设zzwzjs顶尖的赣州网站建设
  • 做电影种子下载网站违法吗wordpress网站如何搬家
  • 有谁用2008做网站服务器网站建设费预付定金什么科目
  • 网站制作好了怎么上传微信公众号定制开发
  • 怎么制作购物网站做网站多少钱大概
  • 开发企业网站的公司网站怎么备案在哪里下载
  • vs2017手机网站开发wordpress删除主题数据
  • 宝安网站建设定制推广接单网
  • 潍坊做网站的企业什么网站做玩具的外贸
  • 绵阳做网站优化pc网站 手机网站 微信网站 上海
  • 网站建设 数据分析微信的网址链接