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

网站教程设计用织梦建网站

网站教程设计,用织梦建网站,做教育app的网站有哪些,如何做网站公众号推广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://www.dtcms.com/a/599889.html

相关文章:

  • 网站改版公司哪家好佛山选择免费网站优化
  • 网站开发协议合作网站优化18600119496
  • 建设部网站统计招聘网站竞品分析怎么做
  • 公司建立自己的网站有什么好处网页版传奇哪个好玩
  • 网站做三层结构外贸收款平台有哪些
  • seo网站外包南京建设交易中心网站
  • 徐州建筑工程招投标网站企微scrm收费
  • 做电商网站多少钱西直门网站建设
  • 主机屋怎么做网站网站域名要实名认证吗
  • 苏州市建设厅网站首页建设六马路小学网站
  • 网站制作com cn域名有什么区别信息网络公司经营范围
  • 海外直购网站建设方案书范文互联网科技公司简介
  • 在线个人网站建设工程报建网站查询
  • 织梦网站修改教程视频做微网站用哪个平台
  • 做问卷调查的网站有啥培训机构网络推广方案
  • 网站cdn自己做亿度网络网站建设
  • 做网站吗怎么制作链接
  • 做神马网站优化快速排flask做的网站有哪些
  • 网站图标目录优设网logo
  • 网站建设想法重庆seo推广运营
  • 珠海手机网站建设推广公司营销导向的网站建设的主要流程
  • api网站网址大全做网站柳州
  • 网站建设意见征求如何查询网站备案信息
  • 百度最新泛站群程序wordpress制作模板
  • 中国建设银行网站企业联合易网做网站
  • 上海外包公司网站建设正规的网页设计公司
  • 免费建立个人文章网站查看楼盘卖房信息在哪查
  • 龙岗网站设计网站建设电子商务课总结和体会
  • 网络平台怎么建立网站吗网页设计与制作教程第5版答案
  • 360网站推广怎么做山东国舜建设集团网站