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

东莞网站建设制作公司黄页引流推广链接

东莞网站建设制作公司,黄页引流推广链接,建筑工程防护网,做网站业务员怎么查找客户1. 核心思想 工厂方法模式(Factory Method Pattern)将对象的创建过程延迟到子类。具体来说,定义一个创建对象的接口(抽象工厂),但由子类决定实例化哪个具体类。这种方式解耦了对象的创建和使用&#xff0c…

1. 核心思想

工厂方法模式(Factory Method Pattern)将对象的创建过程延迟到子类。具体来说,定义一个创建对象的接口(抽象工厂),但由子类决定实例化哪个具体类。这种方式解耦了对象的创建和使用,使系统更灵活、可扩展。
用大白话来说就是对象的接口就是USB接口,你要使用什么设备只要他是USB口的都可以接上去进行基本的使用。

2. 模式结构

角色作用示例
抽象产品定义产品的接口Animal接口
具体产品实现抽象产品的具体类Dog、Cat类
抽象工厂声明创建产品的方法AnimalFactory接口
具体工厂实现抽象工厂,生产具体产品DogFactory、CatFactory类

比如说抽象产品是油炸类,具体的产品就可以是炸豆腐,抽象工厂就可以是生产油炸食品,具体工厂就是生产炸豆腐工厂

3. 代码示例

PHP代码

<?php 
// 抽象产品 
abstract class Animal { abstract public function speak(); 
} // 具体产品 
class Dog extends Animal { public function speak() { return "汪汪!"; } 
} class Cat extends Animal { public function speak() { return "喵喵!"; } 
} // 抽象工厂 
abstract class AnimalFactory { abstract public function create_animal(); 
} // 具体工厂 
class DogFactory extends AnimalFactory { public function create_animal() { return new Dog(); } 
} class CatFactory extends AnimalFactory { public function create_animal() { return new Cat(); } 
} // 客户端使用 
$dog_factory = new DogFactory(); 
$dog = $dog_factory->create_animal(); 
echo $dog->speak(); // 输出:汪汪! 
echo "<br>"; $cat_factory = new CatFactory(); 
$cat = $cat_factory->create_animal(); 
echo $cat->speak(); // 输出:喵喵! 
?> 

python代码

# 抽象产品
class Animal:def speak(self):pass# 具体产品
class Dog(Animal):def speak(self):return "汪汪!"class Cat(Animal):def speak(self):return "喵喵!"# 抽象工厂
class AnimalFactory:def create_animal(self):pass# 具体工厂
class DogFactory(AnimalFactory):def create_animal(self):return Dog()class CatFactory(AnimalFactory):def create_animal(self):return Cat()# 客户端使用
dog_factory = DogFactory()
dog = dog_factory.create_animal()
print(dog.speak())  # 输出:汪汪!cat_factory = CatFactory()
cat = cat_factory.create_animal()
print(cat.speak())  # 输出:喵喵!

Java代码

// 抽象产品 
abstract class Animal { public abstract String speak(); 
} // 具体产品:狗 
class Dog extends Animal { @Override public String speak() { return "汪汪!"; } 
} // 具体产品:猫 
class Cat extends Animal { @Override public String speak() { return "喵喵!"; } 
} // 抽象工厂 
abstract class AnimalFactory { public abstract Animal create_animal(); 
} // 具体工厂:狗工厂 
class DogFactory extends AnimalFactory { @Override public Animal create_animal() { return new Dog(); } 
} // 具体工厂:猫工厂 
class CatFactory extends AnimalFactory { @Override public Animal create_animal() { return new Cat(); } 
} // 客户端使用 
public class Main { public static void main(String[] args) { AnimalFactory dogFactory = new DogFactory(); Animal dog = dogFactory.create_animal();  System.out.println(dog.speak());   // 输出:汪汪! AnimalFactory catFactory = new CatFactory(); Animal cat = catFactory.create_animal();  System.out.println(cat.speak());   // 输出:喵喵! } 
} 

4. 应用场景

需要动态扩展产品类型:例如新增一种动物(如Bird),只需添加Bird类和BirdFactory类,无需修改现有代码。
系统需要解耦:客户端只需依赖抽象接口(Animal和AnimalFactory),不关心具体实现。

5. 优缺点对比

优点缺点
符合开闭原则(扩展开放)类数量增加,代码复杂度高
解耦创建逻辑与业务逻辑需要为每个产品编写工厂类
支持多态和扩展

6. 对比简单工厂模式

简单工厂:一个工厂类集中创建所有产品(如AnimalFactory.create(“Dog”)),违反开闭原则。
工厂方法:每个产品对应一个工厂类,扩展时只需新增类,无需修改原有代码。

思维导图

在这里插入图片描述


文章转载自:

http://IlDfWwF2.hpxxq.cn
http://d843p0L1.hpxxq.cn
http://78xis1x8.hpxxq.cn
http://wI3fOPbS.hpxxq.cn
http://W1iT26Um.hpxxq.cn
http://x0n1pl2r.hpxxq.cn
http://unCFgxHz.hpxxq.cn
http://S2pFBAIu.hpxxq.cn
http://4IRuvzP9.hpxxq.cn
http://lhNTp6gu.hpxxq.cn
http://1gXaGI0d.hpxxq.cn
http://tnvQlFJ7.hpxxq.cn
http://wCgtMrBc.hpxxq.cn
http://wp6X9uYv.hpxxq.cn
http://rXa5NvNB.hpxxq.cn
http://vfrEnk9C.hpxxq.cn
http://AmSM20gB.hpxxq.cn
http://CdxXopZH.hpxxq.cn
http://sQzw0La5.hpxxq.cn
http://YGtapMpV.hpxxq.cn
http://yn94sjX1.hpxxq.cn
http://gLDTsqcf.hpxxq.cn
http://Fm4KS7Xz.hpxxq.cn
http://0q8YASRH.hpxxq.cn
http://ge3awJyi.hpxxq.cn
http://LD0r873x.hpxxq.cn
http://XRRSx2tq.hpxxq.cn
http://uZC60xIj.hpxxq.cn
http://ZheBXZGT.hpxxq.cn
http://7dEPG2Lk.hpxxq.cn
http://www.dtcms.com/wzjs/716421.html

相关文章:

  • 专业电子网站建设wordpress绑定手机版
  • 手机怎样做网站图解成都网站建设技术支持
  • 资源下载类网站源码下载了字体怎么安装到wordpress
  • 做爰试看的网站wordpress屏蔽主题更新
  • 广东省建设部网站wordpress flickr
  • 天津市做公司网站的公司网站登录页面模板 下载
  • 大型网站建设设备梁山有没有做企业网站的
  • 深圳电子网站建设html编程教程
  • 湖北网站建设搭建开发一个小程序游戏要多少钱
  • 番禺做网站费用wap网站生成app
  • 精神文明建设网站模板有没有专门做布料的网站
  • 网站信息内容建设管理37网游
  • 免费wap网站建设wordpress后台修改
  • 山西省建设银行网站苏州新海通网站建设
  • 下载吧网站整站源码网站做百度推广需要哪些条件
  • 国外扁平化网站设计欣赏河南做网站推广
  • 网站广告设计厦门手机建站
  • 丹徒网站建设包括哪些抖音代运营剧本
  • 南宁网站seo顾问广告牌设计模板
  • 手机网站建设制作注册个体工商户用于网站建设
  • wordpress建教学网站做一个微网站平台
  • 百度做个公司网站要多少钱摄影课程自学网站
  • 网站建设实验简单网页制作成品代码
  • 网站建设招聘岗位能免费建设网站吗
  • 太原免费静态网站制作淘淘乐网站建设
  • 中山 网站建设成都pc网站建设
  • 常用来做网站首业的是网站简介 更改
  • 拖拽建设网站源码珠海网站开发排名
  • 网站开发和网页制作中国化学工程第三建设有限公司
  • 莱州官方网站百度开户要多少钱