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

网站已经备案更换主机谷歌seo最好的公司

网站已经备案更换主机,谷歌seo最好的公司,wordpress 增加 导航栏,北京微信网站开发报价工厂方法模式又叫虚拟构造函数(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建性工作推迟到子类中。 工厂模式可以分为简单工厂…

工厂方法模式又叫虚拟构造函数(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建性工作推迟到子类中。

工厂模式可以分为简单工厂、工厂方法和抽象工厂模式。

  1. 简单工厂模式:需要注意的是,简单工厂并不包含在《GoF》一书中定义的23种设计模式,因为它过于简单,更像是一种编程习惯,并且它违反了开闭原则,增加工厂需要修改类的实现。
  2. 工厂方法模式:是简单工厂模式的进一步抽象和推广,将具体创建工作交给子类去做,避免违反开闭原则。
  3. 抽象工厂模式:如果说工厂方法模式针对的是一个产品等级结构,那么抽象工厂模式面对的就是多个产品等级结构。
    由于简单工厂模式严格来说并不算是一种设计模式,就不再画UML图了,大家通过一个例子感受一下它的用法:
public interface Shape {void draw();
}public class Circle implements Shape {@Overridepublic void draw() {System.out.println("draw a circle");}
}public class Square implements Shape {@Overridepublic void draw() {System.out.println("draw a square");}
}public class SimpleFactory {public static Shape createShape(String shapeType) {if (shapeType == null) {throw new IllegalArgumentException("Shape type cannot be null.");}switch (shapeType.toLowerCase()) {case "circle":return new Circle();case "square":return new Square();default:throw new IllegalArgumentException("Unsupported shape type: " + shapeType);}}
}public class Demo {public static void main(String[] args) {Shape circle = SimpleFactory.createShape("circle");circle.draw();Shape square = SimpleFactory.createShape("square");square.draw();Shape triangle = SimpleFactory.createShape("triangle");triangle.draw();}
}

工厂方法模式的UML图如下:

在这里插入图片描述

下面还是以一个例子来说明工厂方法模式的用法。假设有一个果农接口,相当于图中的Creator,有一个葡萄果农和一个苹果农分别实现果农接口,这两个类相当于ConcreteCreator类。然后有一个水果接口 ,相当于Product接口,一个苹果类和一个葡萄类分别实现水果接口。这时候注意体会工厂方法模式和简单工厂模式的区别,工厂方法模式把创建对象的工作分别放到葡萄果农和苹果农的类中去实现,也就是在具体类中实现。

public interface GuoNong {Fruit createFruit();
}public class GrapeNong implements GuoNong {@Overridepublic Fruit createFruit() {return new Grape();}
}public class AppleNong implements GuoNong {@Overridepublic Fruit createFruit() {return new Apple();}
}public interface Fruit {void plant();void grow();void harvest();
}public class Grape implements Fruit {@Overridepublic void plant() {System.out.println("种葡萄");}@Overridepublic void grow() {System.out.println("葡萄生长");}@Overridepublic void harvest() {System.out.println("收葡萄");}
}public class Apple implements Fruit{@Overridepublic void plant() {System.out.println("种苹果");}@Overridepublic void grow() {System.out.println("苹果生长");}@Overridepublic void harvest() {System.out.println("收苹果");}
}public class Demo {public static void main(String[] args) {GrapeNong grapeNong = new GrapeNong();Fruit grape = grapeNong.createFruit();grape.plant();grape.grow();grape.harvest();System.out.println("**************分割线**********************");AppleNong appleNong = new AppleNong();Fruit apple = appleNong.createFruit();apple.plant();apple.grow();apple.harvest();}
}

大家如果需要视频版本的讲解,可以关注下我的B站:

三、设计模式之工厂方法模式精讲

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

相关文章:

  • vs做网站开发企业网站内容更新
  • 自己做商业网站微信公众平台开发者文档
  • 重庆南岸营销型网站建设公司哪家专业如何在百度发布短视频
  • icp网站负责人奥德贵阳网络推广公司
  • 深圳 做公司网站万网域名查询接口
  • 沧浪设计网站公司外贸公司建网站一般多少钱
  • 大型门户网站建设 费用上海做公益活动有哪些好的网站
  • 工会教工之家网站建设wordpress主页面编辑器
  • 帮忙做文档的网站公司网站开发的核心技术
  • 贵阳网站建设q.479185700惠珠海品牌网站制作服务
  • 网站设计psd泰安人事考试网
  • 网站推广方案200字公司如何做网站不发钱
  • 怎么建立购物网站中国监理建设协会网站
  • 网站不备案可以登录吗杭州做网站
  • 建筑网站管桩进场验收规范珠海网络推广公司
  • 中文绿色环保网站模板南昌网站快速排名提升
  • 网站建设摊销时间是多久工厂拿货回家加工
  • 企业电子商务网站建设的最终目的天津建设工程信息网 招标发布软件
  • 英文网站推广服务网站做营销推广
  • 创建全国文明城市调查问卷秦皇岛seo排名
  • 企业建立站点方案有几种给领导发网站建设可行性方案邮件怎么写
  • 郑州百度网站优化网页版qq官网
  • 网站结构形式有哪些wordpress媒体文件
  • 凤岗镇仿做网站网站备案许可证号查询网站
  • 5118网站如何使用免费版网站地图html怎么做
  • 深圳html5网站建设小榄网站开发
  • 建旅游网站的意义wordpress清理插件哪个好
  • 国外网站模板网站建设手机app设计网站
  • 多种手机网站建设旅行的意义 wordpress主题
  • html5微信网站模板重庆市建设工程信息网联系电话