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

上传网站大气网站源码下载

上传网站,大气网站源码下载,sae 安装新版wordpress,网站被k表现工厂模式 在软件开发的领域中#xff0c;设计模式充当着解决常见问题的高效且可复用的策略角色。其中#xff0c;工厂模式作为创建对象的重要设计模式#xff0c;具有不可小觑的应用价值。接下来#xff0c;我们将深入探讨简单工厂模式、工厂方法模式和抽象工厂模式。 一…工厂模式 在软件开发的领域中设计模式充当着解决常见问题的高效且可复用的策略角色。其中工厂模式作为创建对象的重要设计模式具有不可小觑的应用价值。接下来我们将深入探讨简单工厂模式、工厂方法模式和抽象工厂模式。 一、简单工厂模式 简单工厂模式虽未被纳入 23 种经典设计模式但可视为工厂模式的一种简化且特殊的实现方式。 一基础版 // 咖啡产品的接口 public interface Coffee {void make(); }// 美式咖啡类实现 Coffee 接口 public class Americano implements Coffee {Overridepublic void make() {System.out.println(正在制作美式咖啡);} }// 摩卡咖啡类实现 Coffee 接口 public class Mocha implements Coffee {Overridepublic void make() {System.out.println(正在制作摩卡咖啡);} }// 卡布奇诺咖啡类实现 Coffee 接口 public class Cappuccino implements Coffee {Overridepublic void make() {System.out.println(正在制作卡布奇诺咖啡);} }// 简单工厂类 public class CoffeeSimpleFactory {/*** 根据传入的字符串类型创建对应的咖啡对象* param type 咖啡类型的字符串* return 对应的咖啡对象如果类型不匹配则返回 null*/public Coffee createCoffee(String type) {if (americano.equalsIgnoreCase(type)) {return new Americano();} else if (mocha.equalsIgnoreCase(type)) {return new Mocha();} else if (cappuccino.equalsIgnoreCase(type)) {return new Cappuccino();}return null;} }​ 基础版通过传入字符串参数来决定创建的咖啡产品类型但这种方式易出现参数输入错误的情况且新增产品时需在工厂类中添加额外的判断逻辑。 二升级版 // 咖啡产品的接口 public interface Coffee {void make(); }// 美式咖啡类实现 Coffee 接口 public class Americano implements Coffee {Overridepublic void make() {System.out.println(正在制作美式咖啡);} }// 摩卡咖啡类实现 Coffee 接口 public class Mocha implements Coffee {Overridepublic void make() {System.out.println(正在制作摩卡咖啡);} }// 卡布奇诺咖啡类实现 Coffee 接口 public class Cappuccino implements Coffee {Overridepublic void make() {System.out.println(正在制作卡布奇诺咖啡);} }// 简单工厂类升级版 public class CoffeeSimpleFactory {/*** 使用反射根据传入的咖啡类的 Class 对象创建对应的咖啡对象* param clazz 咖啡类的 Class 对象* return 对应的咖啡对象如果 clazz 为 null 则返回 null* throws Exception 反射创建对象时可能抛出的异常*/public static Coffee createCoffee(Class? extends Coffee clazz) throws Exception {if (clazz! null) {return clazz.newInstance();}return null;} }​ 升级版利用反射机制解决了基础版的参数准确性和扩展性问题。 三总结 适用场景 工厂负责创建的对象数量相对较少。客户端只需提供参数无需关注对象创建的具体流程。 优点 只需传入准确参数即可轻松获取所需对象无需知晓内部创建细节。 缺点 工厂类承担过多职责新增产品类型时需修改判断逻辑违背了开闭原则。面对复杂的产品结构时扩展难度较大。 二、工厂方法模式 工厂方法模式明确了一个创建对象的接口具体由实现该接口的子类来决定实例化的对象类别将对象的实例化操作推迟至子类中进行。 一主要角色 抽象工厂Abstract Factory定义创建产品的通用接口为调用者提供访问具体工厂方法的途径以创建产品。具体工厂Concrete Factory负责实现抽象工厂中的抽象方法从而完成具体产品的创建工作。抽象产品Product确立产品的规范和标准详细描述产品的主要特性与功能。具体产品Concrete Product切实实现抽象产品所定义的接口由具体工厂负责创建且与具体工厂之间存在一一对应的关系。 二代码实现 // 抽象工厂 public interface CoffeeFactory {/*** 创建咖啡对象* return 抽象的咖啡对象*/Coffee create(); }// 具体工厂 - 拿铁咖啡工厂 public class LatteFactory implements CoffeeFactory {Overridepublic Coffee create() {return new Latte();} }// 抽象产品 public interface Coffee {/*** 描述咖啡的制作过程*/void make(); }// 具体产品 - 拿铁咖啡 public class Latte implements Coffee {Overridepublic void make() {System.out.println(精心调配拿铁咖啡牛奶与咖啡的完美融合);} }三总结 适用场景 当创建对象的过程涉及大量重复的代码时。客户端应用层不关心产品类实例的创建和实现细节只关注最终获取到的产品功能。当一个父类通过其子类来决定创建具体的对象类型时。 优点 用户只需关注所需产品对应的具体工厂无需操心产品的创建细节。新增产品时符合开闭原则只需创建新的具体工厂和具体产品类无需修改现有代码提高了系统的可扩展性。 缺点 随着产品种类的增加类的数量会显著增多导致代码结构的复杂度上升。较高的抽象层次增加了系统的抽象性对于初学者或不熟悉设计模式的开发者来说理解和运用的难度较大。 三、抽象工厂模式 抽象工厂模式旨在提供一个创建一系列相关或相互依赖对象的接口而无需明确指定具体的类。 一主要角色 抽象工厂Abstract Factory提供了创建多个不同产品的接口这些产品可能属于不同的等级或类别。具体工厂Concrete Factory实现了抽象工厂中的抽象方法负责生成具体的一组相关或相互依赖的产品。抽象产品Product定义了产品的基本规范和主要特性一个抽象工厂可能关联多个不同的抽象产品。具体产品Concrete Product实现了抽象产品所定义的接口由具体的工厂进行创建且与具体工厂之间存在多对一的关系。 二代码实现 // 咖啡店 抽象工厂 public interface CoffeeShopFactory {/*** 创建咖啡产品* return 具体的咖啡产品*/Coffee createCoffee();/*** 创建甜点产品* return 具体的甜点产品*/Dessert createDessert(); }// 美式风格工厂 public class AmericanFactory implements CoffeeShopFactory {Overridepublic Coffee createCoffee() {return new Americano();}Overridepublic Dessert createDessert() {return new Cheesecake();} }// 意式风格工厂 public class ItalyFactory implements CoffeeShopFactory {Overridepublic Coffee createCoffee() {return new Cappuccino();}Overridepublic Dessert createDessert() {return new Tiramisu();} }// 抽象产品 - 咖啡 public interface Coffee {/*** 描述咖啡的制作过程*/void make(); }// 具体产品 - 美式咖啡 public class Americano implements Coffee {Overridepublic void make() {System.out.println(精心调制美式咖啡浓郁醇厚);} }// 抽象产品 - 甜点 public interface Dessert {/*** 描述甜点的品尝方式*/void enjoy(); }// 具体产品 - 芝士蛋糕 public class Cheesecake implements Dessert {Overridepublic void enjoy() {System.out.println(尽情享受美味的芝士蛋糕香甜可口);} }三总结 产品族指一系列紧密相关、相互关联的产品集合。 产品等级指处于同一继承体系或具有相似性质的产品类别。 适用场景 当客户端应用层不依赖于产品类实例的创建和实现细节时。强调一系列相关的产品对象属于同一产品族需协同工作且创建这些对象的过程存在大量重复代码时。当需要为客户端提供一个统一的产品类库使所有产品以相同的接口呈现从而降低客户端对具体实现的依赖时。 优点 能够确保当一个产品族中的多个对象协同工作时客户端始终使用来自同一产品族的对象保证了产品的一致性和协调性。 缺点 当产品族中需要新增一个产品时所有相关的工厂类都需要进行修改这可能导致较大的代码改动和潜在的风险。
http://www.hkea.cn/news/14536541/

相关文章:

  • 贵州省城乡与住房建设厅网站厦门网站建设seo
  • 深圳网站外包公司网页定制
  • 怎么做一个购物平台网站网站制作域名是免费的吗
  • 番禺区手机版网站建设甘肃路桥建设集团有限公司官方网站
  • 可信网站友链怎么做建站之星导出网站
  • WordPress 站点图标链接wordpress加关键词
  • 福田网站建设价格响应式网站需要的技术
  • 南京市建筑工程网站做渔家乐哪个网站最好
  • php+mysql网站开发教程集团公司网页设计内容
  • 如何给公司做网站推广宣传福州高端网站建设服务网络公司
  • o2o与网站建设论文pc网站增加手机站
  • 济南建设网站的公司哪家好免费下载ppt模板网站推荐
  • 网站建设 印花税网站与网络的区别
  • 国内新闻最近新闻今天做seo推广公司
  • 申请一个域名可以建设一个网站吗腾讯云网站备案
  • 乐清企业网站建设店铺推广渠道有哪些方式
  • 腾讯云怎样做网站中国住房和城乡建设部查询网站
  • pc 移动的网站开发网站滑动效果怎么做
  • 海南网站制作网站建设的技术准备
  • 阿里云网站开发服务器数字广东网络建设有限公司是国企吗
  • 有人用dw做网站吗网站开发是怎么样的
  • 问题不大工作室 网站网络建设费用
  • 优推宝可以做自己网站吗义乌 外贸网站 开发
  • 常见的搜索引擎有哪些博山专业网站优化哪家好
  • 怎样做公司的网站电子商务网站开发费用入账
  • 营销网站中最重要的部分是郑州同济医院妇科怎么样
  • 网站建设 ui设计网站系统参数设置
  • 邯郸网站建设公司排名环保局网站设计方案
  • 通州建设局网站网站兼容性代码
  • 建设网站装配式建筑楼房淮北官方网站