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

做网站 长/广州网站营销推广

做网站 长,广州网站营销推广,制作网页添加图片,网站转化路径目录 作用: 简单工厂模式: 工厂方法模式: 抽象工厂模式: 作用: 实现了创建者和调用者的分离 简单工厂模式: 用来生产同一等级结构中的任意产品(对于增加新的产品,需要覆盖已有代码) 结构图&…

目录

作用:

简单工厂模式:

工厂方法模式:

抽象工厂模式:


作用:

实现了创建者和调用者的分离

简单工厂模式:

用来生产同一等级结构中的任意产品(对于增加新的产品,需要覆盖已有代码)

结构图: 

代码实例: 

//汽车接口
public interface Car {void name();
}public class Tesla implements Car{@Overridepublic void name() {System.out.println("特斯拉");}
}public class Wuling implements Car{@Overridepublic void name() {System.out.println("五菱宏光");}
}//汽车工厂
public class CarFactory {public static Car getWuling(){return new Wuling();}public static Car getTesla(){return new Tesla();}
}//测试类
public class Test {public static void main(String[] args) {Car car1 = CarFactory.getWuling();Car car2 = CarFactory.getTesla();car1.name();car2.name();}
}

运行结果:

五菱宏光
特斯拉 

当我们需要生产新产品时,需要对工厂类进行修改,这就违背了对修改关闭的开闭原则,于是便有了下面的工厂方法模式 

工厂方法模式:

用于生产同一等级结构中的固定产品(支持增加任意产品)

结构图: 

代码实例:  

//汽车接口
public interface Car {void name();
}//工厂接口
public interface CarFactory {Car getCar();
}//特斯拉的工厂
public class TeslaFactory implements CarFactory{@Overridepublic Car getCar() {return new Tesla();}
}//五菱宏光的工厂
public class WulingFactory implements CarFactory{@Overridepublic  Car getCar() {return new Wuling();}
}public class Tesla implements Car {@Overridepublic void name() {System.out.println("特斯拉");}
}public class Wuling implements Car {@Overridepublic void name() {System.out.println("五菱宏光");}
}//测试类
public class Test {public static void main(String[] args) {Car car1 = new WulingFactory().getCar();Car car2 = new TeslaFactory().getCar();car1.name();car2.name();}
}

运行结果:

五菱宏光
特斯拉 

当我们需要生产新产品时,只需要新创建产品以及对应的产品工厂类,实现接口,无需修改原有代码。

抽象工厂模式:

抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。

前面介绍的工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机、计算机软件学院只培养计算机软件专业的学生等。

同种类称为同等级,也就是说:工厂方法模式中只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如农场里既养动物又种植物,电器厂既生产电视机又生产洗衣机或空调,大学既有软件专业又有生物专业等。

抽象工厂模式将考虑多等级产品的生产,将同一个具体工厂所生产的位于不同等级的一组产品称为一个产品族 。 

使用抽象工厂模式一般要满足以下条件。

  • 可以在类的内部对产品族中相关联的多等级产品共同管理,而不必专门引入多个新的类来进行管理。

  • 当需要产品族时,抽象工厂可以保证客户端始终只使用同一个产品的产品组。

  • 抽象工厂增强了程序的可扩展性,当增加一个新的产品族时,不需要修改原代码,满足开闭原则。

缺点是:当产品族中需要增加一个新的产品时,所有的工厂类都需要进行修改。增加了系统的抽象性和理解难度。

模式的结构

  1. 抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),可以创建多个不同等级的产品。

  2. 具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。

  3. 抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。

  4. 具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间是多对一的关系。

代码实例:  

//抽象产品手机
public interface PhoneProduct {void start();void call();void shutDown();
}//抽象产品路由器
public interface RouterProduct {void start();void shutDown();
}//抽象工厂
public interface ProductFactory {//生产手机PhoneProduct phoneproduct();//生产路由器RouterProduct routerproduct();
}//具体产品华为手机
public class HuaWeiPhone implements PhoneProduct {@Overridepublic void start() {System.out.println("华为手机已开机");}@Overridepublic void call() {System.out.println("华为手机正在打电话");}@Overridepublic void shutDown() {System.out.println("华为手机已关机");}
}//具体产品华为路由器
public class HuaWeiRouter implements RouterProduct {@Overridepublic void start() {System.out.println("华为路由器开机");}@Overridepublic void shutDown() {System.out.println("华为路由器关机");}
}//具体华为工厂
public class HuaWeiFactory implements ProductFactory{@Overridepublic PhoneProduct phoneproduct() {return new HuaWeiPhone();}@Overridepublic RouterProduct routerproduct() {return new HuaWeiRouter();}
}//具体产品小米手机
public class XiaoMiPhone implements PhoneProduct {@Overridepublic void start() {System.out.println("小米手机已开机");}@Overridepublic void call() {System.out.println("小米手机正在打电话");}@Overridepublic void shutDown() {System.out.println("小米手机已关机");}
}//具体产品小米路由器
public class XiaoMiRouter implements RouterProduct {@Overridepublic void start() {System.out.println("小米路由器开机");}@Overridepublic void shutDown() {System.out.println("小米路由器关机");}
}//具体小米工厂
public class XiaoMiFactory implements ProductFactory{@Overridepublic PhoneProduct phoneproduct() {return new XiaoMiPhone();}@Overridepublic RouterProduct routerproduct() {return new XiaoMiRouter();}
}//实现类
public class Test {public static void main(String[] args) {System.out.println("==================小米系列产品==================");XiaoMiFactory xiaoMiFactory = new XiaoMiFactory();PhoneProduct phoneProduct = xiaoMiFactory.phoneproduct();phoneProduct.start();phoneProduct.shutDown();System.out.println("==================华为系列产品==================");HuaWeiFactory huaWeiFactory = new HuaWeiFactory();RouterProduct routerProduct = huaWeiFactory.routerproduct();routerProduct.start();routerProduct.shutDown();}
}

运行结果: 

==================小米系列产品==================
小米手机已开机
小米手机已关机
==================华为系列产品==================
华为路由器开机
华为路由器关机

http://www.jmfq.cn/news/5050621.html

相关文章:

  • 青岛网站制作公司 网络服务/武汉网站建设推广公司
  • 南阳seo网站排名优化/seo查询系统
  • 任县网站制作/安卓优化大师官网
  • 广州一次做网站/微博营销的特点
  • 网站的风格主要包括/微信小程序开发工具
  • 网站ui设计收费/南京seo外包
  • 专业的网站建设服务商/百度seo2022新算法更新
  • 外贸独立站营销怎么做/百度引流推广怎么收费
  • 香港做网站公司有哪些/大连谷歌seo
  • 淘宝网站开发语言/seo专业实战培训
  • 湖北省交通建设监理协会网站/seo软件服务
  • 云南建站公司/搜全网的浏览器
  • 做游戏小网站是啥/深圳新闻最新事件
  • 建设银行官方网站网页版/宁波网站推广方式
  • 网站做电源/seo常用分析的专业工具
  • 影楼底片不给合法吗/百度排名优化工具
  • 个人怎么做课程网站/淘宝站外引流推广方法
  • 域名与网站区别/营销策划案的模板
  • 专业彩票网站开发 APP开发/怎么创建网页链接
  • 网站如何做品牌宣传/裤子seo标题优化关键词
  • ecshop网站后台批量上传图片/如何注册一个域名
  • 台州做网站优化/百度关键词点击价格查询
  • 《网站开发实例》pdf下载/竞价排名的定义
  • 免费多用户商城系统源码/seo管理系统
  • 在国外做黄皮网站违法么/收录优美图片官网
  • 郑州做网站 码通/618网络营销策划方案
  • 做英文网站多钱/怎样做网站卖自己的产品
  • 所得税 网站建设费/页面设计漂亮的网站
  • 设计网站页面好处/seo工程师是什么职业
  • 诈骗网站查询/外包公司是什么意思