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

手机怎么建设网站深圳网上推广怎么做

手机怎么建设网站,深圳网上推广怎么做,o2o电子商务平台,thinkcmf跟wordpress简单工厂模式 什么是简单工厂模式? 简单工厂模式是一种创建型设计模式,它不属于 GoF(四人帮)的 23 种经典设计模式,但通常被认为是工厂方法模式的一种特殊实现或简化版本。 它的核心思想是:定义一个工厂…

简单工厂模式

什么是简单工厂模式?

简单工厂模式是一种创建型设计模式,它不属于 GoF(四人帮)的 23 种经典设计模式,但通常被认为是工厂方法模式的一种特殊实现或简化版本。

它的核心思想是:定义一个工厂类,该工厂类根据传入的参数来动态决定创建哪一种产品的实例。 客户端不需要知道具体产品的创建过程,只需要向工厂请求所需的产品即可。

简单来说,它就像一个专门负责生产不同类型产品的“小作坊”。你告诉小作坊你需要什么(通过参数),小作坊就给你生产对应的产品。

主要角色:

  1. 工厂类 (Factory):

    • 核心角色,负责实现创建所有产品实例的内部逻辑。

    • 通常包含一个静态方法(所以也常被称为静态工厂方法模式),该方法根据传入的参数(如字符串、枚举、数字等)来判断应该创建哪个具体产品类的实例。

    • 返回一个抽象产品类型或接口。

  2. 抽象产品 (Abstract Product):

    • 定义了所有具体产品共有的接口或抽象类。

    • 工厂类创建的产品实例都将向上转型为这个抽象产品类型。

  3. 具体产品 (Concrete Product):

    • 实现了抽象产品接口或继承了抽象产品类的具体类。

    • 每个具体产品类代表一种特定类型的产品,是工厂类创建的目标。

工作流程:

  1. 客户端需要一个产品。

  2. 客户端调用工厂类的静态创建方法,并传入一个参数来指定需要的产品类型。

  3. 工厂类根据传入的参数,使用 if-else 或 switch-case 等条件判断语句,实例化一个具体的产类对象。

  4. 工厂类将创建好的具体产品实例向上转型为其抽象产品类型,并返回给客户端。

  5. 客户端通过抽象产品接口来使用该产品,而无需关心其具体实现。

代码示例 (Java):

假设我们要创建一个简单的计算器,可以进行加法和减法运算。

// 1. 抽象产品 (Operation)
interface Operation {double getResult(double numberA, double numberB);
}
​
// 2. 具体产品 (AddOperation, SubOperation)
class AddOperation implements Operation {@Overridepublic double getResult(double numberA, double numberB) {return numberA + numberB;}
}
​
class SubOperation implements Operation {@Overridepublic double getResult(double numberA, double numberB) {return numberA - numberB;}
}
​
// 3. 工厂类 (OperationFactory)
class OperationFactory {// 静态工厂方法public static Operation createOperation(String operate) {Operation operation = null;switch (operate) {case "+":operation = new AddOperation();break;case "-":operation = new SubOperation();break;// 可以扩展更多操作,如 "*", "/"// case "*"://     operation = new MulOperation();//     break;default:throw new IllegalArgumentException("Unsupported operation: " + operate);}return operation;}
}
​
// 客户端使用
public class Client {public static void main(String[] args) {double numA = 10;double numB = 5;
​// 需要加法运算Operation addOp = OperationFactory.createOperation("+");System.out.println(numA + " + " + numB + " = " + addOp.getResult(numA, numB)); // 输出: 10.0 + 5.0 = 15.0
​// 需要减法运算Operation subOp = OperationFactory.createOperation("-");System.out.println(numA + " - " + numB + " = " + subOp.getResult(numA, numB)); // 输出: 10.0 - 5.0 = 5.0
​// 尝试一个不支持的操作try {Operation divOp = OperationFactory.createOperation("/");System.out.println(numA + " / " + numB + " = " + divOp.getResult(numA, numB));} catch (IllegalArgumentException e) {System.err.println(e.getMessage()); // 输出: Unsupported operation: /}}
}

优点:

  1. 封装了对象的创建过程: 客户端不需要知道具体产品是如何创建的,只需要知道如何从工厂获取产品。这使得客户端代码更简洁,与具体产品的实现解耦。

  2. 易于理解和实现: 结构简单,代码量少,容易上手。

  3. 客户端代码与具体产品解耦: 客户端只依赖于抽象产品和工厂类,不依赖于具体产品类。当需要替换或增加新的具体产品时,客户端代码通常不需要修改。

缺点:

  1. 工厂类职责过重: 所有的产品创建逻辑都集中在一个工厂类中。当产品种类非常多时,工厂类的代码会变得非常庞大和复杂,难以维护。

  2. 违反开闭原则 (Open-Closed Principle): 当需要增加新的产品时,通常需要修改工厂类的代码(例如在 switch-case 中增加新的分支)。这意味着工厂类对扩展是关闭的,对修改是开放的。

  3. 不支持继承: 工厂方法通常是静态的,因此工厂类不能被继承来改变创建行为(这与工厂方法模式不同)。

适用场景:

  1. 工厂类负责创建的对象比较少,创建逻辑不复杂。

  2. 客户端只知道传入工厂类的参数,对于如何创建对象的逻辑不关心。

  3. 当你想封装对象的创建过程,并对外提供一个统一的创建入口时。

与工厂方法模式的区别:

  • 简单工厂模式: 一个工厂类负责创建所有类型的产品。通常使用静态方法。

  • 工厂方法模式: 定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪一个类(具体工厂类创建具体产品)。每个具体产品都有一个对应的具体工厂。这更符合开闭原则。

简单工厂模式可以看作是工厂方法模式的一个简化,当产品种类不多且不经常变化时,它是一个不错的选择。如果系统需要高度的灵活性和可扩展性,工厂方法模式或抽象工厂模式可能更合适。


文章转载自:

http://5KlPZGJp.kjdxh.cn
http://uZCpBHJj.kjdxh.cn
http://xp7pkCyP.kjdxh.cn
http://hCvTSc4x.kjdxh.cn
http://GKgmQXGr.kjdxh.cn
http://s4ZIgs8U.kjdxh.cn
http://MNLszjAJ.kjdxh.cn
http://UxxAwWiY.kjdxh.cn
http://btIlp9sI.kjdxh.cn
http://MfN3gUkz.kjdxh.cn
http://CcEmbWdV.kjdxh.cn
http://Nr3MUHvH.kjdxh.cn
http://zxahXVt0.kjdxh.cn
http://YwaABND4.kjdxh.cn
http://NFqXo1V1.kjdxh.cn
http://oWdqoa8l.kjdxh.cn
http://8yoIXQ6g.kjdxh.cn
http://DYdDHMWw.kjdxh.cn
http://nteeOurX.kjdxh.cn
http://3CXeGWTv.kjdxh.cn
http://kpUTFHiT.kjdxh.cn
http://gdO8hdQQ.kjdxh.cn
http://ctfsqOEw.kjdxh.cn
http://c6wJjg7G.kjdxh.cn
http://UBsNvqZR.kjdxh.cn
http://414wnmC5.kjdxh.cn
http://cgqqbkZw.kjdxh.cn
http://gnbNRzos.kjdxh.cn
http://tMBIi0zT.kjdxh.cn
http://8JGsQeAn.kjdxh.cn
http://www.dtcms.com/wzjs/677725.html

相关文章:

  • 哪个网站可以做会计分录网页微信版本在哪里下载
  • 网站平台建设服务合同金属东莞网站建设技术支持
  • iis 子网站建设官方网站查询
  • 网站小游戏怎么做的建设工程施工合同范本哪个网站
  • 网站首页页脚设计php创建网页
  • 网站开通会员怎么开发pageadmin做的网站的域名必须要备案吗
  • 深圳官方网站新闻网站域名属于哪里管
  • 北京网站建设公司资讯成都房地产官网
  • 安阳网站建设哪家好开发网站定制
  • 如何在工商局网站做企业年报视觉传达设计挣钱吗
  • 北京知名网站建设公司各大网络平台的推广内容和方法
  • 让人做网站需要注意哪些问题网络工程师需要什么证书
  • 怎么找到网站后台wordpress插件盗版
  • 四川建设厅网站查询公司企业黄页
  • 梧州市网站建设17网站一起做网店潮汕
  • 做充值网站网站开发与服务器交互
  • 中国保险行业协会网站网站开发学的啥
  • 浙江城乡与住房建设部网站平面设计图片 作品集
  • 国内设计师网站网站建设汇报书 ppt
  • 如何建网站遂宁科技魏
  • 画室网站模板加油站网站建设
  • 空调维修自己做网站软件外包专业
  • 网站推广渠道特点广东网站建设的
  • 重庆巫山网站设计哪家专业网站开发的可行性研究报告
  • 查看网站cms苏州公司建设网站
  • 泉州网站建设兼职厦门海绵城市建设官方网站
  • 泉州网站制作建设北京58网站建设
  • 那个网站做网编好官方网站建设项目询价
  • 乌海网站建设公司徐州建设工程交易网张周
  • 京东电子商务网站建设网页设计站