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

宝安做棋牌网站建设找哪家公司好企业网站设计与推广

宝安做棋牌网站建设找哪家公司好,企业网站设计与推广,wordpress 移动版商城,wordpress把文章标题放进url系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用…

系列文章目录

设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列
设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点
设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用场景和优缺点。
设计模式之模板方法模式,通俗易懂快速理解,以及模板方法模式的使用场景
设计模式之-建造者模式通俗易懂理解,以及建造者模式的使用场景和示列代码
设计模式之-代理模式,快速掌握理解代理模式,以及代理模式的使用场景
设计模式之-原型模式,快速掌握原型模式,通俗易懂的理解原型模式以及使用场景
设计模式之-中介者模式,快速掌握中介者模式,通俗易懂的讲解中介者模式以及它的使用场景
设计模式之-责任链模式,快速掌握责任链模式,通俗易懂的讲解责任链模式以及它的使用场景
设计模式之-装饰模式,快速掌握装饰模式,通俗易懂的讲解装饰模式以及它的使用场景


文章目录

  • 系列文章目录
  • 前言
  • 一、3种模式的概念、使用场景和优缺点
    • 简单工厂模式(Simple Factory Pattern):
    • 工厂方法模式(Factory Method Pattern):
    • 抽象工厂模式(Abstract Factory Pattern):
  • 二、3种工厂模式的代码示例
    • 简单工厂模式:
    • 工厂方法模式:
    • 抽象工厂模式:


前言

当谈到工厂模式时,通常指的是三种常见的工厂模式:简单工厂模式、工厂方法模式和抽象工厂模式。下面我将详细讲解每一种模式的概念、使用场景和优缺点。

一、3种模式的概念、使用场景和优缺点

简单工厂模式(Simple Factory Pattern):

概念:简单工厂模式通过一个工厂类来创建不同类型的对象,客户端只需要知道所需对象的类型即可。
使用场景:当对象的创建逻辑相对简单且不需要频繁修改时,可以使用简单工厂模式。
优点:客户端代码与具体产品解耦,易于扩展和维护。
缺点:违反了开闭原则,新增产品需要修改工厂类的代码,不符合开放封闭原则。

工厂方法模式(Factory Method Pattern):

概念:工厂方法模式将对象的创建延迟到子类中,由子类决定具体创建哪个对象。
使用场景:当需要创建一组相关或相互依赖的对象时,可以使用工厂方法模式。
优点:符合开闭原则,新增产品只需要添加相应的工厂类,不需要修改现有代码。
缺点:增加了系统的复杂度,每个产品都需要一个对应的工厂类。

抽象工厂模式(Abstract Factory Pattern):

概念:抽象工厂模式提供一个接口,用于创建一系列相关或相互依赖的对象,而不需要指定具体的类。
使用场景:当需要创建一组相关对象的产品族时,可以使用抽象工厂模式。
优点:符合开闭原则,新增产品族只需要添加相应的具体工厂类,不需要修改现有代码。
缺点:增加了系统的复杂度,每个产品族都需要一个对应的具体工厂类。

二、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) {if (type.equals("A")) {return new ConcreteProductA();} else if (type.equals("B")) {return new ConcreteProductB();}return null;}
}// 客户端代码
public class Main {public static void main(String[] args) {Product productA = SimpleFactory.createProduct("A");productA.operation();Product productB = SimpleFactory.createProduct("B");productB.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");}
}// 工厂接口
interface Factory {Product createProduct();
}// 具体工厂A
class ConcreteFactoryA implements Factory {@Overridepublic Product createProduct() {return new ConcreteProductA();}
}// 具体工厂B
class ConcreteFactoryB implements Factory {@Overridepublic Product createProduct() {return new ConcreteProductB();}
}// 客户端代码
public class Main {public static void main(String[] args) {Factory factoryA = new ConcreteFactoryA();Product productA = factoryA.createProduct();productA.operation();Factory factoryB = new ConcreteFactoryB();Product productB = factoryB.createProduct();productB.operation();}
}

抽象工厂模式:

// 产品接口A
interface ProductA {void operation();
}// 具体产品A1
class ConcreteProductA1 implements ProductA {@Overridepublic void operation() {System.out.println("ConcreteProductA1 operation");}
}// 具体产品A2
class ConcreteProductA2 implements ProductA {@Overridepublic void operation() {System.out.println("ConcreteProductA2 operation");}
}// 产品接口B
interface ProductB {void operation();
}// 具体产品B1
class ConcreteProductB1 implements ProductB {@Overridepublic void operation() {System.out.println("ConcreteProductB1 operation");}
}// 具体产品B2
class ConcreteProductB2 implements ProductB {@Overridepublic void operation() {System.out.println("ConcreteProductB2 operation");}
}// 抽象工厂接口
interface AbstractFactory {ProductA createProductA();ProductB createProductB();
}// 具体工厂1
class ConcreteFactory1 implements AbstractFactory {@Overridepublic ProductA createProductA() {return new ConcreteProductA1();}@Overridepublic ProductB createProductB() {return new ConcreteProductB1();}
}// 具体工厂2
class ConcreteFactory2 implements AbstractFactory {@Overridepublic ProductA createProductA() {return new ConcreteProductA2();}@Overridepublic ProductB createProductB() {return new ConcreteProductB2();}
}// 客户端代码
public class Main {public static void main(String[] args) {AbstractFactory factory1 = new ConcreteFactory1();ProductA productA1 = factory1.createProductA();ProductB productB1 = factory1.createProductB();productA1.operation();productB1.operation();AbstractFactory factory2 = new ConcreteFactory2();ProductA productA2 = factory2.createProductA();ProductB productB2 = factory2.createProductB();productA2.operation();productB2.operation();}
}
http://www.wangmingla.cn/news/156060.html

相关文章:

  • 网页添加背景图片代码win7优化大师下载
  • 做品牌特价的网站有哪些网络营销策略都有哪些
  • 最简 wordpress主题seo优化推广流程
  • 网站侧边栏怎么做站内免费推广有哪些
  • 百度免费做网站网站免费网站免费
  • ppt里做网站效果国际新闻热点事件
  • 入境美国前做登记叫啥网站seo优化推广多少钱
  • 电子商务网站建设公司seo优化排名推广
  • 网站建设与规划前景近期新闻大事
  • 海南省做购房合同网站民生热点新闻
  • 网站模板后台怎么做优化排名 生客seo
  • wordpress 5.5客户端windows优化大师免费版
  • 京东网站建设的目的2023第二波疫情已经到来了吗
  • 制作一个app软件优化大师下载安装免费
  • 织梦做双语版网站网站流量指标有哪些
  • 西安东郊做网站人工智能培训机构哪个好
  • 网站开发及服务合同模板西安关键词seo
  • 湘潭做网站 联系磐石网络企业网站网页设计
  • 重庆建网站多少钱淘宝关键词优化工具
  • 域名空间网站建设seo 服务
  • 网站的费用可以做无形资产网站建站教程
  • 企业网站主页设计图简单的个人主页网站制作
  • 又拍网站怎么做的2024年新冠疫情最新消息今天
  • 京伦科技做的网站如何属于免费的网络营销方式
  • 国外做机器人的网站鸿科经纬教网店运营推广
  • 如何注册chn域名网站百度搜索关键词排名
  • 武汉建设信息网公告网站seo搜索引擎优化怎么做
  • 孟村县做网站价格北京seo技术
  • 门户型网站建设经典网络营销案例
  • 自己电脑做网站主机企业seo服务