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

青岛 生物类网站建设网站ipv6改造怎么做 网页代码

青岛 生物类网站建设,网站ipv6改造怎么做 网页代码,c 网站开发 视频教程,万能网盘搜索引擎入口目录 一、简单工厂模式 #xff08;一#xff09;需求 #xff08;二#xff09;使用传统的方法来完成 #xff08;三#xff09;传统方法的优缺点 #xff08;四#xff09;基本介绍 #xff08;五#xff09;使用简单工厂模式 二、工厂方法模式 #xff0…目录 一、简单工厂模式 一需求 二使用传统的方法来完成 三传统方法的优缺点 四基本介绍 五使用简单工厂模式 二、工厂方法模式 一需求 二思路 三基本介绍 四工厂方法模式应用 三、抽象工厂模式 一基本介绍 二应用实例 一、简单工厂模式 一需求 看一个披萨的项目要便于披萨种类的扩展要便于维护 披萨的种类很多(比如 GreekPizz、CheesePizz 等) 披萨的制作有 preparebake, cut, box 完成披萨店订购功能。 二使用传统的方法来完成 1、类图 2、代码 pizza类 //将Pizza 类做成抽象 public abstract class Pizza {protected String name; //名字//准备原材料, 不同的披萨不一样因此我们做成抽象方法public abstract void prepare();public void bake() {System.out.println(name baking;);}public void cut() {System.out.println(name cutting;);}//打包public void box() {System.out.println(name boxing;);}public void setName(String name) {this.name name;} } 两种pizza public class GreekPizza extends Pizza {Overridepublic void prepare() {// TODO Auto-generated method stubSystem.out.println( 给希腊披萨 准备原材料 );}} public class CheesePizza extends Pizza {Overridepublic void prepare() {// TODO Auto-generated method stubSystem.out.println( 给制作奶酪披萨 准备原材料 );} } 编写OrderPizza去订购需要的各种pizza public class OrderPizza {// 构造器public OrderPizza() {Pizza pizza null;String orderType; // 订购披萨的类型do {orderType getType();if (orderType.equals(greek)) {pizza new GreekPizza();pizza.setName( 希腊披萨 );} else if (orderType.equals(cheese)) {pizza new CheesePizza();pizza.setName( 奶酪披萨 );} else if (orderType.equals(pepper)) {pizza new PepperPizza();pizza.setName(胡椒披萨);} else {break;}//输出pizza 制作过程pizza.prepare();pizza.bake();pizza.cut();pizza.box();} while (true);} } 客户端订购pizza //相当于一个客户端发出订购 public class PizzaStore {public static void main(String[] args) {// TODO Auto-generated method stubnew OrderPizza();}} 三传统方法的优缺点 1) 优点是比较好理解简单易操作。 2) 缺点是违反了设计模式的 ocp 原则即 对扩展开放对修改关闭 。即当我们给类增加新功能的时候尽量不修改代码或者尽可能少修改代码. 3) 比如我们这时要新增加一个 Pizza 的种类 (Pepper 披萨 ) 我们需要做如下修改 . 4) 改进的思路分析 分析 修改代码可以接受但是如果我们在其它的地方也有创建 Pizza 的代码就意味着也需要修改而创建Pizza 的代码 往往有多处 。 思路 把创建 Pizza 对象封装到一个类中这样我们有新的 Pizza 种类时只需要修改该类就可 其它有创建到 Pizza 对象的代码就不需要修改了 .- 简单工厂模式 四基本介绍 简单工厂模式是属于创建型模式是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式 简单工厂模式定义了一个创建对象的类由这个类来封装实例化对象的行为(代码) 在软件开发中当我们会用到大量的创建某种、某类或者某批对象时就会使用到工厂模式 在简单工厂模式中主要涉及三个角色抽象产品、具体产品和简单工厂。 抽象产品抽象产品可以是一个接口或抽象类定义了产品通用的方法有具体子类来实现 具体产品具体产品是抽象产品的实现类它实现了抽象产品中定义的方法 简单工厂包含创建对象的方法隐藏了创建对象细节。 五使用简单工厂模式 简单工厂模式的设计方案 : 定义一个可以实例化 Pizaa 对象的类封装创建对象的代码。 将对象的创建逻辑封装在一个工厂类中客户端不需要知道具体的创建细节只需要向工厂类请求所需对象即可。 简单工厂类封装了创建对象的方法 //简单工厂类封装了创建对象的细节 public class SimpleFactory {//根据orderType 返回对应的Pizza 对象public Pizza createPizza(String orderType) {Pizza pizza null;System.out.println(使用简单工厂模式);if (orderType.equals(greek)) {pizza new GreekPizza();pizza.setName( 希腊披萨 );} else if (orderType.equals(cheese)) {pizza new CheesePizza();pizza.setName( 奶酪披萨 );} else if (orderType.equals(pepper)) {pizza new PepperPizza();pizza.setName(胡椒披萨);}return pizza;}}orderpizza public class OrderPizza {//定义一个简单工厂对象SimpleFactory simpleFactory;Pizza pizza null;//构造器public OrderPizza(SimpleFactory simpleFactory) {setFactory(simpleFactory);}public void setFactory(SimpleFactory simpleFactory) {String orderType ; //用户输入的this.simpleFactory simpleFactory; //设置简单工厂对象do {orderType getType(); pizza this.simpleFactory.createPizza(orderType);//输出pizzaif(pizza ! null) { //订购成功pizza.prepare();pizza.bake();pizza.cut();pizza.box();} else {System.out.println( 订购披萨失败 );break;}}while(true);}// 写一个方法可以获取客户希望订购的披萨种类private String getType() {try {BufferedReader strin new BufferedReader(new InputStreamReader(System.in));System.out.println(input pizza 种类:);String str strin.readLine();return str;} catch (IOException e) {e.printStackTrace();return ;}}} 客户端下单 //相当于一个客户端发出订购 public class PizzaStore {public static void main(String[] args) {//使用简单工厂模式new OrderPizza(new SimpleFactory());System.out.println(~~退出程序~~);}} 其实工厂模式还叫静态工厂模式也就是把创建对象的方法设置为静态方法那就不需要创建工厂对象了直接用类名的方式调用工厂创建对象的方法即可。 //简单工厂类封装了创建对象的细节 public class SimpleFactory {//简单工厂模式 也叫 静态工厂模式public static Pizza createPizza(String orderType) {Pizza pizza null;System.out.println(使用简单工厂模式2);if (orderType.equals(greek)) {pizza new GreekPizza();pizza.setName( 希腊披萨 );} else if (orderType.equals(cheese)) {pizza new CheesePizza();pizza.setName( 奶酪披萨 );} else if (orderType.equals(pepper)) {pizza new PepperPizza();pizza.setName(胡椒披萨);}return pizza;}} orderpizza public class OrderPizza2 {Pizza pizza null;String orderType ;// 构造器public OrderPizza2() {do {orderType getType();pizza SimpleFactory.createPizza2(orderType);// 输出pizzaif (pizza ! null) { // 订购成功pizza.prepare();pizza.bake();pizza.cut();pizza.box();} else {System.out.println( 订购披萨失败 );break;}} while (true);}// 写一个方法可以获取客户希望订购的披萨种类private String getType() {try {BufferedReader strin new BufferedReader(new InputStreamReader(System.in));System.out.println(input pizza 种类:);String str strin.readLine();return str;} catch (IOException e) {e.printStackTrace();return ;}} } 总结工厂封装了对象的创建过程降低了客户端的复杂性并且方便了产品类型的扩展和维护。 二、工厂方法模式 一需求 披萨项目新的需求客户在点披萨时可以点不同口味的披萨比如 北京的奶酪 pizza 、 北京的胡椒pizza 或者是伦敦的奶酪 pizza 、伦敦的胡椒 pizza 。 二思路 思路1 使用简单工厂模式创建不同的简单工厂类比如 BJPizzaSimpleFactory 、LDPizzaSimpleFactory 等等 . 从当前这个案例来说也是可以的但是考虑到项目的规模以及软件的可维护性、可扩展性并不是特别好 思路2 使用工厂方法模式 三基本介绍 工厂方法模式设计方案 将披萨项目的实例化功能抽象成抽象方法在不同的口味点餐子类中具体实现。 工厂方法模式 抽象工厂中定义了一个创建对象的抽象方法由子类工厂决定要实例化的类。工厂方法模式将 对象的实例化推迟到子类 在工厂方法模式中主要涉及三个角色抽象产品、具体产品、简单工厂和具体工厂 抽象产品抽象产品可以是一个接口或抽象类定义了产品通用的方法由具体子类来实现 具体产品具体产品是抽象产品的实现类它实现了抽象产品中定义的方法 抽象工厂定义了创建产品的接口包含一个或多个创建产品的抽象方法。 具体工厂实现了抽象工厂接口负责实例化具体产品。 四工厂方法模式应用 客户在点披萨时可以点不同口味的披萨比如 北京的奶酪pizza、北京的胡椒 pizza 或者是伦敦的奶酪 pizza 、伦敦的胡椒 pizza pizza类 //将Pizza 类做成抽象 public abstract class Pizza {protected String name; //名字//准备原材料, 不同的披萨不一样因此我们做成抽象方法public abstract void prepare();public void bake() {System.out.println(name baking;);}public void cut() {System.out.println(name cutting;);}//打包public void box() {System.out.println(name boxing;);}public void setName(String name) {this.name name;} } 各种pizza public class LDPepperPizza extends Pizza{Overridepublic void prepare() {// TODO Auto-generated method stubsetName(伦敦的胡椒pizza);System.out.println( 伦敦的胡椒pizza 准备原材料);} } public class LDCheesePizza extends Pizza{Overridepublic void prepare() {// TODO Auto-generated method stubsetName(伦敦的奶酪pizza);System.out.println( 伦敦的奶酪pizza 准备原材料);} } public class BJPepperPizza extends Pizza {Overridepublic void prepare() {// TODO Auto-generated method stubsetName(北京的胡椒pizza);System.out.println( 北京的胡椒pizza 准备原材料);} } public class BJCheesePizza extends Pizza {Overridepublic void prepare() {// TODO Auto-generated method stubsetName(北京的奶酪pizza);System.out.println( 北京的奶酪pizza 准备原材料);}} orderpizza public abstract class OrderPizza {//定义一个抽象方法createPizza , 让各个工厂子类自己实现abstract Pizza createPizza(String orderType);// 构造器public OrderPizza() {Pizza pizza null;String orderType; // 订购披萨的类型do {orderType getType();pizza createPizza(orderType); //抽象方法由工厂子类完成//输出pizza 制作过程pizza.prepare();pizza.bake();pizza.cut();pizza.box();} while (true);}// 写一个方法可以获取客户希望订购的披萨种类private String getType() {try {BufferedReader strin new BufferedReader(new InputStreamReader(System.in));System.out.println(input pizza 种类:);String str strin.readLine();return str;} catch (IOException e) {e.printStackTrace();return ;}} } public class LDOrderPizza extends OrderPizza {OverridePizza createPizza(String orderType) {Pizza pizza null;if(orderType.equals(cheese)) {pizza new LDCheesePizza();} else if (orderType.equals(pepper)) {pizza new LDPepperPizza();}// TODO Auto-generated method stubreturn pizza;}} public class BJOrderPizza extends OrderPizza {OverridePizza createPizza(String orderType) {Pizza pizza null;if(orderType.equals(cheese)) {pizza new BJCheesePizza();} else if (orderType.equals(pepper)) {pizza new BJPepperPizza();}// TODO Auto-generated method stubreturn pizza;}} PizzaStore  public class PizzaStore {public static void main(String[] args) {String loc bj;if (loc.equals(bj)) {//创建北京口味的各种Pizzanew BJOrderPizza();} else {//创建伦敦口味的各种Pizzanew LDOrderPizza();}// TODO Auto-generated method stub}} 总结当需要新增pizza类型时只需要实现具体的产品和具体的工厂即可而无需修改客户端的代码。 三、抽象工厂模式 一基本介绍 抽象工厂模式定义了一个interface用于创建相关或有依赖关系的对象簇而无需指明具体的类 抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合。 从设计层面看抽象工厂模式就是对简单工厂模式的改进(或者称为进一步的抽象)。 将工厂抽象成两层AbsFactory(抽象工厂) 和 具体实现的工厂子类。程序员可以根据创建对象类型使用对应的工厂子类。这样将单个的简单工厂类变成了工厂簇更利于代码的维护和扩展。 类图如下 二应用实例 抽象工厂 //一个抽象工厂模式的抽象层(接口) public interface AbsFactory {//让下面的工厂子类来 具体实现public Pizza createPizza(String orderType); } 工厂实现类 //这是工厂子类 public class BJFactory implements AbsFactory {Overridepublic Pizza createPizza(String orderType) {System.out.println(~使用的是抽象工厂模式~);// TODO Auto-generated method stubPizza pizza null;if(orderType.equals(cheese)) {pizza new BJCheesePizza();} else if (orderType.equals(pepper)){pizza new BJPepperPizza();}return pizza;}} public class LDFactory implements AbsFactory {Overridepublic Pizza createPizza(String orderType) {System.out.println(~使用的是抽象工厂模式~);Pizza pizza null;if (orderType.equals(cheese)) {pizza new LDCheesePizza();} else if (orderType.equals(pepper)) {pizza new LDPepperPizza();}return pizza;}} 订购披萨的类通过聚合的方式设置工厂 public class OrderPizza {AbsFactory factory;// 构造器public OrderPizza(AbsFactory factory) {setFactory(factory);}private void setFactory(AbsFactory factory) {Pizza pizza null;String orderType ; // 用户输入this.factory factory;do {orderType getType();// factory 可能是北京的工厂子类也可能是伦敦的工厂子类pizza factory.createPizza(orderType);if (pizza ! null) { // 订购okpizza.prepare();pizza.bake();pizza.cut();pizza.box();} else {System.out.println(订购失败);break;}} while (true);}// 写一个方法可以获取客户希望订购的披萨种类private String getType() {try {BufferedReader strin new BufferedReader(new InputStreamReader(System.in));System.out.println(input pizza 种类:);String str strin.readLine();return str;} catch (IOException e) {e.printStackTrace();return ;}} }
http://www.zqtcl.cn/news/215271/

相关文章:

  • 网站免费模板资源商标设计一般多少钱
  • 视频微网站开发谷歌怎么做网站推广
  • 微信公众号服务号网站开发流程网站推广网络
  • 徐州网站建设技术wordpress 分辨 模版
  • 慈溪企业网站建设公司wordpress网盘搜索引擎源码
  • 建筑类企业网站模板怎么制作网站链接
  • 常州网站建设外包襄阳做网站的
  • 临清网站优化用jsp做网站的感想
  • 个人工作室网站网站备案 万网
  • 网络推广模板网站会员管理软件
  • 西乡塘网站建设网站建设公司的成本有哪些方面
  • 在哪里可以学习做网站西安制作公司网站的公司
  • 网站建设 更新 维护淮北矿业工程建设公司网站
  • 网站开发 平台宝应做网站
  • 网站开发开题报告广州的兼职网站建设
  • 辽宁同鑫建设网站网站后期维护费用
  • 政法网站建设有哪些不足广州网站建设信息科技有限公司
  • 营销型网站 平台海口智能建站价格
  • 网站空间过期电商网站建设比较好的
  • seo公司 彼亿营销舆情优化公司
  • diango是做网站的后端吗网页怎么做成app
  • 思勤传媒网站建设公司如何查询网站的外链
  • 网站设计思路文案范文专业手机网站建设多少钱
  • 有部分网站打不开网站服务内容怎么写
  • 百度安全网站检测好看的免费的小说网站模板
  • 锡山区住房和城乡建设局网站免费ppt模板下载简约
  • 建设银行 杭州招聘网站建设工程有限公司是干什么的
  • 做网站必须购买空间吗?3点新闻发布
  • 济南集团网站建设流程东莞做网站公司首选
  • 有需要做网站推广找我网站怎么 备案