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

成都网站建设服务公司厦门做网站哪家公司好

成都网站建设服务公司,厦门做网站哪家公司好,西南大学校园网站建设往年考试卷,域名注册商推荐目录 模式定义实现方式简单工厂工厂方法主要优点 应用场景源码中的应用 模式定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method 使得一个类的实例化延迟到子类。 实现方式 简单工厂 以下示例非设计模式,仅为编码的一种规…

目录

  • 模式定义
  • 实现方式
    • 简单工厂
    • 工厂方法
    • 主要优点
  • 应用场景
  • 源码中的应用

模式定义

定义一个用于创建对象的接口,让子类决定实例化哪一个类。
Factory Method 使得一个类的实例化延迟到子类。
在这里插入图片描述

实现方式

简单工厂

以下示例非设计模式,仅为编码的一种规范

public class FactoryMethod {public static void main(String[] args) {Application application = new Application();Product product = application.getObject("0");product.method1();}
}interface Product{void method1();
}class ProductA implements Product{public void method1(){System.out.println("ProductA.method1 executed.");}
}class ProductB implements Product{public void method1(){System.out.println("ProductB.method1 executed.");}
}class SimpleFactory{public static Product createProduct(String type){if ("0".equals(type)){return new ProductA();}else if ("1".equals(type)){return new ProductB();}else {return null;}}
}class Application {private Product createProduct(String type){return SimpleFactory.createProduct(type);}Product getObject(String type){Product product = createProduct(type);return product;}
}

工厂方法

public class FactoryMethod {public static void main(String[] args) {Application application = new ConcreteProductA();Product product = application.getObject();product.method1();}
}interface Product{void method1();
}class ProductA implements Product{public void method1(){System.out.println("ProductA.method1 executed.");}
}class ProductB implements Product{public void method1(){System.out.println("ProductB.method1 executed.");}
}class SimpleFactory{public static Product createProduct(String type){if ("0".equals(type)){return new ProductA();}else if ("1".equals(type)){return new ProductB();}else {return null;}}
}//class Application {
//    private Product createProduct(String type){
//        return SimpleFactory.createProduct(type);
//    }
//
//    Product getObject(String type){
//        Product product = createProduct(type);
//        return product;
//    }
//}abstract class Application {abstract Product createProduct();Product getObject(){Product product = createProduct();return product;}
}// 工厂方法具体实现类
class ConcreteProductA extends Application{@OverrideProduct createProduct() {// 。。。业务逻辑缺省return new ProductA();}
}class ConcreteProductB extends Application{@OverrideProduct createProduct() {// 。。。业务逻辑缺省return new ProductB();}
}

主要优点

  1. 将具体产品和创建者解耦
  2. 符合单一职责原则
  3. 符合开放封闭原则

应用场景

  1. 抽象:当你不知道该使用对象的确切类型的时候。
  2. 扩展:当你希望为库或框架提供扩展其内部组件的方法时。

源码中的应用

// java api
// 静态工厂方法

Calendar.getInstance()
java.text.NumberFormat.getInstance()
java.util.ResourceBundle.getBundle()

// 工厂方法

java.net.URLStreamHandlerFactory
javax.xml.bind.JAXBContext.createMarshaller

创作不易,点赞、关注、收藏
创作不易,点赞、关注、收藏
创作不易,点赞、关注、收藏
请添加图片描述

http://www.yayakq.cn/news/957616/

相关文章:

  • 数字资产币币交易所网站开发免费 护理ppt模板
  • 个人网站不能做淘宝客wordpress修改文章页面
  • c2c电子商务网站策划装饰公司简介模板
  • 门户网站的建设目的wordpress放产品
  • 百度网站html验证东莞南城网站开发公司电话
  • 团购网站自个做网站哪个公司做的比较好的
  • 网推网站随州seo搜索引擎优化排名
  • 网站建设要用H5的缺点免费进销存软件免费版
  • 超八成搜索网站存在信息泄露问题徐州市云龙区建设局网站
  • 网站打开显示域名错误泉州网站建设公司招聘销售
  • 收录网站有哪些深圳做网站网络营销公司排名
  • 药品加工厂做网站中国城乡与住房建设部网站首页
  • 移动网站建设作业怎么做火短视频网站
  • 建设音乐主题网站枫树seo
  • 社交网站开发客户网站开发要用到的工具
  • 广州市省建设厅网站河北建设厅官方网站
  • 嘉兴网站建设优化wordpress汉字验证码
  • 商务网站规划与网页制作网站做百度推广需要什么材料
  • 做家具商城网站做电商网站外包
  • 凡科免费建站平台怎么建设一个网站
  • 做网站什么意思域名注册要多少钱
  • 嘉兴制作网站网站建设规划案例
  • 做网站需要投资多少钱福州仿站定制模板建站
  • 网站开发项目怎么接如何做网站购物车
  • 淘客怎么做推广网站帝国cms 网站名称标签
  • 宁波好品质品牌网站设计哪家好做医疗器械网站
  • 可以上传资源的网站开发费用响应式网站开发pdf
  • 网站建设可实施性报告谷歌seo推广公司宁波
  • 网站视频外链怎么做wordpress 留言给站长发邮件
  • 汕头企业免费建站版面设计的基本元素是指