设计模式Day01
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo6;//定义小汽车接口public interface ICar { //由于工厂模式仅关系对象的创建,为说明方便,无需定义方法} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo6;//高档小汽车public class TopCar implements ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo6;//中档小汽车public class MidCar implements ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo6;//低档小汽车public class LowCar implements ICar {} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
package com.example.demo6;//简单工厂public class CarSimpleFactory { public static final String TOPTYPE="toptype"; public static final String MIDTYPE="midtype"; public static final String LOWTYPE="lowtype"; public static ICar create(String mark){ ICar obj=null; if(mark.equals(TOPTYPE)){ //如果是高档类型 obj=new TopCar(); //则创建高档车对象 }else if(mark.equals(MIDTYPE)){ obj=new MidCar(); }else if(mark.equals(LOWTYPE)){ obj=new LowCar(); } return obj; //返回选择的对象 }} |
[代码]java代码:
|
1
2
3
4
5
6
7
8
|
package com.example.demo6;//测试程序public class CarTest { public static void main(String[] args) { //从工厂中创建对象 ICar obj=CarSimpleFactory.create("toptype"); }} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo8;//定义小汽车接口public interface ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo8;//高档小汽车public class TopCar implements ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo8;//中档小汽车public class MidCar implements ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo8;//低档小汽车public class LowCar implements ICar {} |
[代码]java代码:
|
1
2
3
4
5
|
package com.example.demo8;//定义抽象工厂public abstract class AbstractFactory { public abstract ICar create();} |
[代码]java代
|
01
02
03
04
05
06
07
08
09
10
|
package com.example.demo8;//定义高档小汽车工厂public class TopFactory extends AbstractFactory { @Override public ICar create() { return new TopCar();//高档工厂生成高档小气车对象 }} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
|
package com.example.demo8;//定义中档小汽车工厂public class MidFactory extends AbstractFactory { @Override public ICar create() { return new LowCar();//低档工厂生成低档小汽车对象 }} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
|
package com.example.demo8;//定义低档小汽车工厂public class LowFactory extends AbstractFactory { @Override public ICar create() { return new MidCar();//低档工厂生成中档小汽车 }} |
[代码]java代码:
|
1
2
3
4
5
6
7
8
|
package com.example.demo8;//测试类public class CarTest { public static void main(String[] args) { AbstractFactory obj=new TopFactory();//多态创建高档工厂 ICar car=obj.create(); //获得高档工厂中的小汽车对象 }} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义小汽车接口public interface ICar {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义高档小汽车类public class TopCar implements ICar {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义中档小汽车类public class MidCar implements ICar {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义低档小汽车类public class LowCar implements ICar {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义公共汽车接口public interface IBus {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义高档公共汽车类public class UpBus implements IBus {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义中档公共汽车类public class MidBus implements IBus {} |
[代码]java代码:
|
1
2
3
|
package com.example.demo9;//定义低档公共汽车类public class DnBus implements IBus {} |
[代码]java代码:
|
1
2
3
4
5
6
|
package com.example.demo9;//定义抽象工厂public abstract class AbstractFactory { public abstract ICar createCar();//产生小汽车对象 public abstract IBus createBus();//产生公共汽车对象} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
package com.example.demo9;//定义高档工厂public class TopFactory extends AbstractFactory { @Override public ICar createCar() { return new TopCar();//高档工厂生成高档小汽车对象 } @Override public IBus createBus() { return new UpBus();//高档工厂生成高档公共汽车对象 }} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
package com.example.demo9;//定义中档工厂public class MidFactory extends AbstractFactory { @Override public ICar createCar() { return new MidCar();//中档工厂生成中档小汽车 } @Override public IBus createBus() { return new MidBus();//中档工厂生成中档公共汽车 }} |
[代码]java代码:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
package com.example.demo9;//定义低档工厂public class LowFactory extends AbstractFactory { @Override public ICar createCar() { return new LowCar();//低档工厂生成低档小汽车对象 } @Override public IBus createBus() { return new DnBus();//低档工厂生成低档公共汽车对象 }} |
设计模式Day01的更多相关文章
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- java EE设计模式简介
1.何为设计模式 设计模式提供了对常见应用设计问题的解决方案.在面向对象的编程中,设计模式通常在解决与对象创建和交互相关的问题,而非整体软件架构所面对的大规模问题,它们以样板代码的形式提供了通用的解决 ...
- 计算机程序的思维逻辑 (54) - 剖析Collections - 设计模式
上节我们提到,类Collections中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了第一类,本节我们介绍第二类. 第二类方法大概可以分为两组: 接受其他 ...
- 《JavaScript设计模式 张》整理
最近在研读另外一本关于设计模式的书<JavaScript设计模式>,这本书中描述了更多的设计模式. 一.创建型设计模式 包括简单工厂.工厂方法.抽象工厂.建造者.原型和单例模式. 1)简单 ...
- 《JavaScript设计模式与开发实践》整理
最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...
- 设计模式之行为类模式大PK
行为类模式大PK 行为类模式包括责任链模式.命令模式.解释器模式.迭代器模式.中介者模式.备忘录模式.观察者模式.状态模式.策略 ...
- .NET设计模式访问者模式
一.访问者模式的定义: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 二.访问者模式的结构和角色: 1.Visitor 抽象访问者角色,为该 ...
- Java开发中的23种设计模式详解
[放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...
- java 设计模式
目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计 ...
随机推荐
- UVA 11722
You are going from Dhaka to Chittagong by train and you came to know one of your old friends is goin ...
- Arcgis 10.1 求面里面所包含的点的平均值
空间链接的作用:将面上的所有点的值加起来取平均值。赋值给面属性。(我们可以定义右击——定义合并规则 连接要素的字段映射参数中指定的合并规则仅适用于连接要素中的属性,且仅适用于多个要素与目标要素匹配 ...
- nginx+php-fpm 502 bad gateway
输出日志配置: http://blog.csdn.net/wzy_1988/article/details/8486888 解决方案: http://www.cnblogs.com/jackluo/p ...
- Lua基础之Function
概述:1.定义和调用 2.多返回值3.可变参数 原文地址 http://blog.csdn.net/dingkun520wy/article/details/50275387 1.定义和调用 函数,在 ...
- 主题: 为kindsoft编辑器替换SyntaxHighlighter代码高亮,整合DEDECMS
作者: fmamcn, 发布日期: 2012-09-29 12:28:39, 浏览数: 1567 看了狼魂发表的将kindeditor中的代码高亮插件prettify换为SyntaxHighlight ...
- Linux与Windows中动态链接库的分析与对比
摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系 ...
- 3.8 spring - AbstractBeanDefinition 介绍
之前,我们已尽完成了xml 文档到 GenericBeanDefinition的转换, 也就是说,到这里,所有的配置都可以在GenericBeanDefinition 的实例中找到对应的配置. Gen ...
- hibernate添加数据,默认字段为null的问题解决
数据库中的一个字段默认为0,但是在用hibernate的添加之后,默认字段竟然不是0,为NULL. 查了一下.发现想要让默认字段生效.需要在*.hbm.xml添加一些参数,如下.(红色部分) dyna ...
- The 5th Zhejiang Provincial Collegiate Programming Contest---ProblemG:Give Me the Number
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2971 题意:将输入的英文数字表达转化为阿拉伯数字. #include< ...
- Scala学习——基础篇
[<快学Scala>笔记] 一.基础 1.变量val 标志符: 声明常量: 如,val answer = 1var 标志符:声明变量: 类型推断:变量的类型由scala根据初始化变量的表达 ...