java之工厂方法设计模式
工厂方法模式是设计模式中应用最广泛的模式。在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。工厂方法模式就是解决这个问题,它通过面向对象的手法,将所要创建的具体对象创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。
Bmw.java
package fac;
public interface Bmw {
    //产品的信息介绍
    void showInfo();
}
class Bmw3 implements Bmw{
    @Override
    public void showInfo() {
        // TODO Auto-generated method stub
        System.out.println("宝马3系");
    }
}
class Bmw5 implements Bmw{
    @Override
    public void showInfo() {
        // TODO Auto-generated method stub
        System.out.println("宝马5系");
    }
}
class Bmw7 implements Bmw{
    @Override
    public void showInfo() {
        // TODO Auto-generated method stub
        System.out.println("宝马7系");
    }
}
BmwFactory.java
package fac; //汽车生产工厂接口
public interface BmwFactory {
Bmw productBmw(); }
class Bmw3Factory implements BmwFactory{ @Override
public Bmw productBmw() {
// TODO Auto-generated method stub
System.out.println("生产宝马3系");
return new Bmw3();
} }
class Bmw5Factory implements BmwFactory{ @Override
public Bmw productBmw() {
// TODO Auto-generated method stub
System.out.println("生产宝马5系");
return new Bmw5();
} }
class Bmw7Factory implements BmwFactory{ @Override
public Bmw productBmw() {
// TODO Auto-generated method stub
System.out.println("生产宝马7系");
return new Bmw7();
} }
Main.jav
package fac;
public class Main {
    public static void main(String[] args) {
        Bmw b3 = new Bmw3Factory().productBmw();
        b3.showInfo();
        Bmw b5 = new Bmw5Factory().productBmw();
        b5.showInfo();
        Bmw b7 = new Bmw7Factory().productBmw();
        b7.showInfo();
    }
}
输出:
生产宝马3系
宝马3系
生产宝马5系
宝马5系
生产宝马7系
宝马7系
说明:通过工厂把new对象给隔离,通过产品的接口可以接受不同实际产品的实现类,实例的类名的改变不影响其它合作开发人员的编程。
java之工厂方法设计模式的更多相关文章
- PHP设计模式一:工厂方法设计模式
		
一.什么是工厂方法模式 作为一种创建型设计模式,工厂方法模式就是要创建“某种东西”.对于工厂方法,要创建的“东西”是一个产品,这个产品与创建它的类之间不存在绑定. 实际上,为了保持这种松耦合,客户会通 ...
 - 比较 Java 静态工厂方法与构造函数
		
1 什么是静态工厂方法 Java 静态工厂方法是在方法前加上 public static,让这个方法变为公开.静态的方法.该方法返回该类的一个实例,就好像一个工厂生产出一个产品.所以称之为静态工厂方法 ...
 - Java之工厂方法
		
普通工厂模式: 第一步:定义接口,坚持面向接口编程, package dp; public interface Sender { public void send();} 第二步:实现接口: p ...
 - (Factory method)工厂方法设计模式
		
定义: 1.) 工厂方法模式是用来封装对象的创建,通过让子类来决定创建的对象是什么,来达到将对象创建的过程封装的目的: 2.) 定义了一个创建对象的接口,但由子类决定要实例的泪是哪一个.工厂方法让类把 ...
 - 使用C# (.NET Core) 实现简单工厂(Simple Factory) 和工厂方法设计模式 (Factory Method Pattern)
		
本文源自深入浅出设计模式. 只不过我是使用C#/.NET Core实现的例子. 前言 当你看见new这个关键字的时候, 就应该想到它是具体的实现. 这就是一个具体的类, 为了更灵活, 我们应该使用的是 ...
 - java 内部类 工厂方法
		
用内部类实现工厂模式 :优先使用类而不是接口,如果你的设计中需要某个接口,你必须了解它,否则不到迫不得已,不要将其放到你的类中 //: innerclasses/Factories.java impo ...
 - JAVA设计模式--工厂方法模式
		
工厂方法设计模式 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关.是具体工厂角色必须实现的接口或者必须继承的父类.在java中它由抽象类或者接口来实现.具体工厂角色:它含有和具体业务逻辑有关 ...
 - Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)
		
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...
 - 设计模式3---工厂模式(Factory Pattern简单工厂、工厂方法、抽象工厂)
		
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...
 
随机推荐
- 【全栈修炼】OAuth2 修炼宝典
			
一.OAuth 概念 开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. -- 维基百 ...
 - python爬虫--模拟12306登录
			
模拟12306登录 超级鹰: #!/usr/bin/env python # coding:utf-8 import requests from hashlib import md5 class Ch ...
 - 使用vsCode配合IAR搭建arm开发环境
			
众所周知IAR的编辑功能就是个垃圾,但是不得不承认IAR的编译器相当的牛X,经常以稳定可靠而著称,为此我们把VSCODE强大的编辑功能和IAR结合一下来加快我们的开发周期. 一.下载VSCODE并安装 ...
 - GoLand相同目录(包)下方法调用
			
之前写的python,摸索go的时候发现相同目录下写的方法调用,在编译时竟然会报错,Mark~ 相同目录下方法调用,main.go文件调用tool.go中的add方法,要点如下: 1.两个文件的pak ...
 - Python基础知识第八篇(集合)
			
#集合是无序的#集合是不同元素组成的#集合是不可变的,列如:列表,字典,元组#创建空集合 s=set() # s={1,2,3,4,2} # print(s) #集合添加>>>> ...
 - JavaFX如何为按钮设置快捷键?
			
JavaFX为按钮设置快捷键的方式有很多,先说下常见的一种. 第一种: KeyCodeCombination kc1 = new KeyCodeCombination(KeyCode.W, KeyCo ...
 - reselect是怎样提升react组件渲染性能的?
			
reselect是什么? reselect是配合redux使用的一款轻量型的状态选择库,目的在于当store中的state重新改变之后,使得局部未改变的状态不会因为整体的state变化而全部重新渲染, ...
 - android只设置部分控件随着软键盘的出现而腾出空间
			
转载请标明出处:https://www.cnblogs.com/tangZH/p/12013685.html 在项目过程中,出现了一个需求,软键盘要顶起部分控件,而另一部分控件不动. 关于这种需求,我 ...
 - Android设置EditText不可编辑
			
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/224 禁用EditText 这个其实很简单,最简单的一种方 ...
 - Android 上下文菜单 ActionMode
			
public class MainActivity extends Activity { private Button button; private ActionMode actionMode; @ ...