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

松岗网站建设营销手机都有什么功能啊

松岗网站建设,营销手机都有什么功能啊,深圳做网站的公司 cheungdom,网站建设教程免费下载小张的工厂进化史——工厂模式 一、简单工厂模式:全能生产线二、工厂方法模式:分品牌代工三、抽象工厂模式:生态产品族四、三种模式核心对比表五、结合Spring实现简单工厂(实践) 小张从华强北起家,最初只有…

小张的工厂进化史——工厂模式

  • 一、简单工厂模式:全能生产线
  • 二、工厂方法模式:分品牌代工
  • 三、抽象工厂模式:生态产品族
  • 四、三种模式核心对比表
  • 五、结合Spring实现简单工厂(实践)

在这里插入图片描述

小张从华强北起家,最初只有一条组装线,根据订单参数(手机/平板)手动切换生产流程。随着订单量激增,他经历了三次产业升级

  1. 阶段1全能生产线通过指令切换产品(简单工厂模式
  2. 阶段2:引入代工厂分品牌生产工厂方法模式
  3. 阶段3:打造生态产品族统一管理(抽象工厂模式

一、简单工厂模式:全能生产线

场景:小张初期用一条生产线,通过参数指令生产不同电子产品。
代码示例:

// 抽象产品:电子设备接口
public interface Device {void boot();
}// 具体产品:手机
public class Phone implements Device {@Overridepublic void boot() { System.out.println("【简单工厂】手机开机:Android系统启动");}
}// 具体产品:平板
public class Tablet implements Device {@Overridepublic void boot() { System.out.println("【简单工厂】平板开机:Android系统启动");}
}// 简单工厂类
public class ElectronicsFactory {public static Device createDevice(String type) {if ("phone".equalsIgnoreCase(type)) {return new Phone();} else if ("tablet".equalsIgnoreCase(type)) {return new Tablet();}throw new IllegalArgumentException("不支持的设备类型");}
}// 客户端调用
public class Client {public static void main(String[] args) {Device phone = ElectronicsFactory.createDevice("phone");phone.boot();  // 输出:手机开机...}
}

特点:

  • 参数化创建:通过if-else判断生产设备,违反开闭原则(新增产品需修改工厂类)
  • 适用场景:初期产品线单一(如仅手机和平板)

二、工厂方法模式:分品牌代工

场景:小张引入华为、小米代工厂,各品牌独立生产设备。
代码示例:

// 抽象工厂接口
public interface DeviceFactory {Device createDevice();
}// 具体工厂:华为代工厂
public class HuaweiFactory implements DeviceFactory {@Overridepublic Device createDevice() {return new HuaweiPhone();  // 华为手机}
}// 具体产品:华为手机
public class HuaweiPhone implements Device {@Overridepublic void boot() {System.out.println("【工厂方法】华为手机:HarmonyOS启动");}
}// 客户端调用
public class Client {public static void main(String[] args) {DeviceFactory factory = new HuaweiFactory();Device phone = factory.createDevice();phone.boot();  // 输出:华为手机...}
}

特点:

  • 多态扩展:新增品牌(如OPPO)只需添加新工厂类,符合开闭原则
  • 类爆炸:每新增一个品牌需增加2个类(工厂+产品)

三、抽象工厂模式:生态产品族

场景:小张扩展生态链,生产同一品牌的多类产品(手机+耳机),确保设计兼容。
代码示例:

// 抽象工厂接口
public interface BrandFactory {Phone createPhone();Earphones createEarphones();
}// 具体工厂:苹果生态
public class AppleFactory implements BrandFactory {@Overridepublic Phone createPhone() {return new iPhone();  // 苹果手机}@Overridepublic Earphones createEarphones() {return new AirPods();  // 苹果耳机}
}// 关联产品族
public class iPhone implements Phone {@Overridepublic void boot() {System.out.println("【抽象工厂】iPhone开机:iOS启动");}
}
public class AirPods implements Earphones {public void connect() {System.out.println("【抽象工厂】AirPods自动配对");}
}// 客户端调用
public class Client {public static void main(String[] args) {BrandFactory factory = new AppleFactory();factory.createPhone().boot();      // 输出:iPhone开机...factory.createEarphones().connect(); // 输出:AirPods自动配对...}
}

特点:

  • 产品族兼容:确保同一品牌风格统一(如苹果极简设计)
  • 接口膨胀:新增品牌需实现全套接口(如华为生态需实现createPhone()和createEarphones())

四、三种模式核心对比表

简单工厂模式工厂方法模式抽象工厂模式
核心目标快速生产单一产品分品牌灵活扩展创建兼容的生态产品族
扩展性❌ 差(需修改代码)✅ 优(新增工厂类)❌ 差(需实现全套接口)
类复杂度1工厂类 + N产品类N工厂类 + N产品类M工厂类 + M×N产品类
设计原则违反开闭原则符合开闭原则符合接口隔离原则
适用场景初期单一产线(手机/平板)多品牌代工(华为/小米)生态链产品(苹果手机+耳机)

五、结合Spring实现简单工厂(实践)

详细内容可参考:【当模板方法模式遇上工厂模式:一道优雅的烹饪架构设计】

抽象类(或者 接口)

public abstract class AbstractCooking {protected CookEnum cookEnum;protected abstract void aromaBlasting();}

枚举类

/*** 菜品枚举类*/
public enum CookEnum {KUNG_PAO_CHICKEN("kungPaoChicken", "宫保鸡丁"),MAPO_TO_FU("mapoTofu", "麻婆豆腐");private final String code;private final String name;CookEnum(String code, String name) {this.code = code;this.name = name;}....
}

宫保鸡丁

/*** 宫保鸡丁*/
@Service
public class KungPaoChicken extends AbstractCooking {public KungPaoChicken() {this.cookEnum = CookEnum.KUNG_PAO_CHICKEN;}@Overrideprotected void aromaBlasting() {System.out.println("葱姜蒜爆香");}	
}

麻婆豆腐

/*** 麻婆豆腐*/
@Service
public class MapoTofu  extends AbstractCooking {public MapoTofu() {this.cookEnum = CookEnum.MAPO_TO_FU;}@Overrideprotected void aromaBlasting() {System.out.println("煸炒郫县豆瓣酱+花椒粒");}
}

工厂类

@Service
public class CookFactory implements InitializingBean {// Spring启动时,会依赖注入 所有的AbstractCooking的bean,注入到cookings@Autowiredprivate List<AbstractCooking> cookings;// 定义Map存储 bean的映射关系private Map<CookEnum, AbstractCooking> cookingMap = new HashMap<>();public AbstractCooking getCookingByCode(String code) {CookEnum cookEnum = CookEnum.getByCode(code);return cookingMap.get(cookEnum);}// CookFactory的bean对象在初始化阶段,动态把 AbstractCooking的所有bean 设置到cookingMap (动态扩展的关键)@Overridepublic void afterPropertiesSet() throws Exception {for (AbstractCooking cooking: cookings) {cookingMap.put(cooking.getCookEnum(), cooking);}}
}
http://www.dtcms.com/wzjs/489347.html

相关文章:

  • 做网站怎么接广告赚钱做网站多少钱
  • 普通网站制作seo公司官网
  • 学校网站建设内容深圳百度开户
  • 服务好的南昌网站制作制作网页多少钱
  • 沧州网站制作信息流广告接单平台
  • wix做的免费网站可以用吗今日最新国内新闻重大事件
  • 苏州外贸营销网站建设首页关键词优化公司
  • 网站搜索排名怎么做网络运营推广怎么做
  • 如何创建外卖网站软文发布网站
  • 最炫表白网站html5源码搜索引擎调词平台多少钱
  • 该怎么做网站编辑主要做什么荥阳seo推广
  • 网站制作难不难口碑营销5t
  • 北京网站建设报价表链接式友谊
  • 广东网站建设人员关于搜索引擎的搜索技巧
  • 聊城手机网站建设会计培训机构
  • 宁夏信用建设官方网站网络媒体推广报价
  • 办公家具温州seo团队
  • 网站安排谷歌推广怎么样
  • 十大国外室内设计网站东莞百度推广优化公司
  • 建站系统源码下载网络推广公司收费标准
  • 教育培训网站建设ppt模板免费优化推广网站的软件
  • 网站备案 多少钱网站推广优化外包公司
  • 金科科技 做网站今日新闻最新头条10条内容
  • 企业发展历程网站备案查询站长工具
  • 怎么提高网站seo优化关键字排名防控措施持续优化
  • 百度收录提交网站后多久收录房地产最新消息
  • 怎么做旅行网站关键词排名优化营销推广
  • 下载宝硬盘做网站广州百度推广电话
  • 创建站点如何做网站精准引流的网络推广
  • 专业企业建站价格深圳网络营销的公司哪家好