设计模式六大原则(1):单一职责原则
设计模式六大原则(2):里氏替换原则
设计模式六大原则(3):依赖倒置原则
设计模式六大原则(4):接口隔离原则
设计模式六大原则(5):迪米特法则
设计模式六大原则(6):开闭原则

FactoryMethodPattern,UML抽象图百度找,代码实现如下

使用工厂方法模式设计一个可以创建不同系列520和525系列的宝马车,每个型号宝马车都要有一个输出自己信息的方法make()方法

抽象产品类

package FactoryMethodPattern;
public interface Product {
    public void make();
}

具体产品类

package FactoryMethodPattern.ConcreteProduct;
import FactoryMethodPattern.Product;
public class makeBMW520a implements Product{
    public void make() {
        System.out.println("I'm B520a!I made.");
    }
}
package FactoryMethodPattern.ConcreteProduct;
import FactoryMethodPattern.Product;
public class makeBMW520b implements Product{
    public void make() {
        System.out.println("I'm B520b!I made.");
    }
}
package FactoryMethodPattern.ConcreteProduct;
import FactoryMethodPattern.Product;
public class makeBMW525a implements Product {
    public void make() {
        System.out.println("I'm B525a!I made.");
    }
}   
package FactoryMethodPattern.ConcreteProduct;
import FactoryMethodPattern.Product;
public class makeBMW525b implements Product {
    public void make() {
        System.out.println("I'm B525b!I made.");
    }
}   

抽象工厂类

package FactoryMethodPattern;
// 建造者
//工厂方法是创建一个框架,让子类决定要如何实现具体的产品
public abstract class Creator {
    public Product FactoryMethod(String f_ProductType)
    {
        Product product;
        product=CreateProduct(f_ProductType);
        //可对产品做其它的操作.....
        return product;
    }
    //让子类去实现要生产什么产品
    public abstract Product CreateProduct(String f_Type);
}

具体工厂类

package FactoryMethodPattern.ConcreteCreator;
import FactoryMethodPattern.Creator;
import FactoryMethodPattern.Product;
import FactoryMethodPattern.ConcreteProduct.makeBMW520a;
import FactoryMethodPattern.ConcreteProduct.makeBMW520b;
public class B520MakeFactory extends Creator {

    @Override
    public Product CreateProduct(String f_Type) {
        switch (f_Type)
        {
            case "B520a":
                return new makeBMW520a();
            case "B520b":
                return new makeBMW520b();
        }
        return null;
    }
}
package FactoryMethodPattern.ConcreteCreator;
import FactoryMethodPattern.Creator;
import FactoryMethodPattern.Product;
import FactoryMethodPattern.ConcreteProduct.makeBMW525a;
import FactoryMethodPattern.ConcreteProduct.makeBMW525b;
public class B525MakeFactory extends Creator {
    @Override
    public Product CreateProduct(String f_Type) {
        switch (f_Type)
        {
            case "B525a":
                return new makeBMW525a();
            case "B525b":
                return new makeBMW525b();
        }
        return null;
    }
}

测试类

package FactoryMethodPattern;
import FactoryMethodPattern.ConcreteCreator.B520MakeFactory;
import FactoryMethodPattern.ConcreteCreator.B525MakeFactory;
public class Test {
    public static void main(String[] args) {
        //生产第一个工厂的车
        Creator creator = new B520MakeFactory();
        Product product = creator.FactoryMethod("B520a");
        product.make();
        product = creator.FactoryMethod("B520b");
        product.make();
        //生产第二个工厂的车
        Creator creator2 = new B525MakeFactory();
        Product product2 = creator2.FactoryMethod("B525a");
        product2.make();
        product2 = creator2.FactoryMethod("B525b");
        product2.make();
    }
}

别嫌弃我没写注释,这个代码很简单,注释省略,嘿嘿。

FactoryMethodPattern(23种设计模式之一)的更多相关文章

  1. Java开发中的23种设计模式详解

    [放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...

  2. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  3. Java开发中的23种设计模式(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  4. c#中的23种设计模式

    C# 23种设计模式汇总 创建型模式 工厂方法(Factory Method) 在工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节.工厂方法模式的核 ...

  5. Java 23种设计模式

    转自: http://zz563143188.iteye.com/blog/1847029 ; i<count; i++){ list.add(new MailSender()); } } pu ...

  6. 从追MM谈Java的23种设计模式(转)

    从追MM谈Java的23种设计模式    这个是从某个文章转载过来的.但是忘了原文链接.如果知道的,我追加一下. 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西 ...

  7. java 23种设计模式及具体例子 收藏有时间慢慢看

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式 ...

  8. JAVA:23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  9. 从追MM谈Java的23种设计模式

    从追MM谈Java的23种设计模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯 德基,只管向服务员说“来四个鸡 ...

  10. 23种设计模式全解析 (java版本)

    转自:http://blog.csdn.net/longyulu/article/details/9159589 其中PHP常用的五种设计模式分别为:工厂模式,单例模式,观察者模式,策略模式,命令模式 ...

随机推荐

  1. 水滴效果的下拉刷新--第三方开源 开源--WaveSwipeRefreshLayout

    下载地址:https://github.com/recruit-lifestyle/WaveSwipeRefreshLayout 直接把代码复制到你的项目于即可使用: 使用: 在xml中: <j ...

  2. Django-form补充

    Django_form补充 问题1:  注册页面输入为空,报错:keyError:找不到password def clean(self): print("---",self.cle ...

  3. sass入门篇

    CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作. 通俗的说,“CSS ...

  4. MySQL 添加、查看字段注释

    语法: 创建表时的COMMENT内容,要查看这些内容,使用命令: show full fields from '表名称'; 查看tb_usr表字段注释: 创建新表的脚本中, 可在字段定义脚本中添加co ...

  5. Spark入门实战系列

    转自:http://www.cnblogs.com/shishanyuan/p/4699644.html 这一两年Spark技术很火,自己也凑热闹,反复的试验.研究,有痛苦万分也有欣喜若狂,抽空把这些 ...

  6. 5.7 Windows常用网络命令

    5.7 Windows常用网络命令 •ping •netstat •winipcfg/ipconfig •tracert •route 5.7.1 ping命令 •功能 –它是用来检查网络是否通畅或者 ...

  7. navicat链接远程数据库

    1.之前使用的是常规的连接方式 学习源头: https://jingyan.baidu.com/article/0aa2237573c1e688cc0d6427.html 这里的ip地址是服务器的ip ...

  8. PCIE编程1:lspci操作

    lspci 是一个用来显示系统中所有PCI总线设备或连接到该总线上的所有设备的工具. 列出所有的PCIE设备: lspci 选项: -v 使得 lspci 以冗余模式显示所有设备的详细信息. -vv ...

  9. Codeforce 101B. Buses(线段树or树状数组+离散化)

     Buses                                                                                               ...

  10. c#的日志插件NLog基本使用

    本文介绍c#的日志插件NLog 安装插件 创建logger 日志级别 书写日志信息 配置 包装器 布局 安装插件 直接下载插件包 Install-Package NLog.Config 创建logge ...