zoukankan      html  css  js  c++  java
  • 设计模式之工厂模式(简单工厂模式)

    1.为什么要用工厂模式

    @1实例化对象不希望公开进行(new)

    @2初始化的耦合问题

    @3当代吗出现大量具体类的时候,一旦加入新的具体类就必须修改原有代码

    @4将实例化具体类的代码从应用中抽离或者封装起来,使他们不会干扰应用的其他部分

    @5当要创建的对象很多或者以后要增加对象时,封装这些要创建对象的代码

    2.分类:简单工厂模式,工厂方法模式,抽象工厂模式

    3.代码实战:

    @1要生产的对象超类:

     1 package com.pattern.simplefactory;
     2 /*
     3  * 产品超类,披萨,每一种披萨都要经过下面的步骤卖给消费者
     4  */
     5 public abstract class Pizze {
     6     
     7     
     8     abstract void prepare();//准备
     9     
    10     abstract void bake();//烘烤
    11     
    12     /*切片*/
    13     abstract void cut();
    14     
    15     /*打包*/
    16     abstract void box();
    17     
    18     /*销售*/
    19     abstract void sale();
    20 
    21 }

    @2对象超类的子类

     1 package com.pattern.simplefactory;
     2 
     3 /**
     4  * 芝士披萨
     5  * @author Administrator
     6  *
     7  */
     8 public class CheesePizze extends Pizze {
     9 
    10     @Override
    11     void prepare() {
    12         System.out.println("cheesepizze prepare");
    13 
    14     }
    15 
    16     @Override
    17     void bake() {
    18         System.out.println("cheesepizze bake");
    19 
    20     }
    21 
    22     @Override
    23     void cut() {
    24         System.out.println("cheesepizze cut");
    25 
    26     }
    27 
    28     @Override
    29     void box() {
    30         System.out.println("cheesepizze box");
    31 
    32     }
    33 
    34     @Override
    35     void sale() {
    36         System.out.println("cheesepizze sale ten yuan");
    37 
    38     }
    39 
    40 }
     1 package com.pattern.simplefactory;
     2 
     3 /**
     4  * 番茄披萨
     5  * @author Administrator
     6  *
     7  */
     8 public class VeggiePizze extends Pizze {
     9 
    10     @Override
    11     void prepare() {
    12         System.out.println("veggiepizze prepare");
    13 
    14     }
    15 
    16     @Override
    17     void bake() {
    18         System.out.println("veggiepizze bake");
    19 
    20     }
    21 
    22     @Override
    23     void cut() {
    24         System.out.println("veggiepizze cut");
    25 
    26     }
    27 
    28     @Override
    29     void box() {
    30         System.out.println("veggiepizze box");
    31 
    32     }
    33 
    34     @Override
    35     void sale() {
    36         System.out.println("veggiepizze sale ten yuan");
    37 
    38     }
    39 
    40 }
     1 package com.pattern.simplefactory;
     2 
     3 /**
     4  * 沙拉披萨
     5  * @author Administrator
     6  *
     7  */
     8 public class SalaPizze extends Pizze {
     9 
    10     @Override
    11     void prepare() {
    12         System.out.println("salapizze prepare");
    13 
    14     }
    15 
    16     @Override
    17     void bake() {
    18         System.out.println("salapizze bake");
    19 
    20     }
    21 
    22     @Override
    23     void cut() {
    24         System.out.println("salapizze cut");
    25 
    26     }
    27 
    28     @Override
    29     void box() {
    30         System.out.println("salapizze box");
    31 
    32     }
    33 
    34     @Override
    35     void sale() {
    36         System.out.println("salapizze sale ten yuan");
    37 
    38     }
    39 
    40 }

    @3对象生产工厂,专门负责生产披萨对象,代替客户端去new对象

     1 package com.pattern.simplefactory;
     2 /*
     3  * 披萨工厂,为所有披萨分装创建对象的代码,只做一件事即生产披萨对象
     4  */
     5 public class SimplePizzeFactory {
     6     
     7     public static Pizze createPizze(String type){//根据需要的类型生产对应的披萨
     8     
     9         Pizze pz = null;
    10         if(type.equals("cheese")){//芝士披萨
    11             pz = new CheesePizze();
    12         }else if(type.equals("veggie")){//番茄披萨
    13             pz = new VeggiePizze();
    14         }
    15         else if(type.equals("sala")){//沙拉披萨
    16             pz = new  SalaPizze();
    17         }
    18         
    19         return pz;
    20         
    21     }
    22 
    23 }

    @4需要对象的客户端,披萨商店

     1 package com.pattern.simplefactory;
     2 
     3 /*
     4  * 披萨商店,需要披萨对象来进行处理并销售
     5  */
     6 public class PizzeStore {
     7     
     8     
     9     
    10     public static void main(String[] args) {
    11 
    12         Pizze pz;
    13         pz = SimplePizzeFactory.createPizze("sala");//让披萨工厂生产一个沙拉披萨,不需要自己再去new出来
    14         pz.prepare();
    15         pz.bake();
    16         pz.cut();
    17         pz.box();
    18         pz.sale();
    19 
    20     }
    21     
    22     
    23 
    24 }

    4.再看看运行结果

    需要程序源码的可以加我微信x241602私聊。
  • 相关阅读:
    微信小程序 单选按钮 最佳
    微信小程序 单选按钮的实现
    微信小程序 单选框实现
    Java Code To Create Pyramid and Pattern
    Java language
    npm Err! Unexpected end of JSON input while parsing near
    Node.js Express FrameWork Tutorial
    Higher-Order Function Examples
    Create First HTTP Web Server in Node.js: Complete Tutorial
    Node.js NPM Tutorial: Create, Publish, Extend & Manage
  • 原文地址:https://www.cnblogs.com/huipengbo/p/6954295.html
Copyright © 2011-2022 走看看