Java-马士兵设计模式学习笔记-建造者模式
一、概述
二、代码
1.Animal.java
 public interface Animal {
     public void bark();
 }
2.Dog.java
 public class Dog implements Animal {
     @Override
     public void bark() {
         System.out.println("Dog wang wang !");
     }
 }
3.Cat.java
 public class Cat implements Animal {
     @Override
     public void bark() {
         System.out.println("cat miao miao");
     }
 }
4.AnimalBuilder.java
package Builder; import java.util.ArrayList;
import java.util.List; public class AnimalBuilder { private static List<Animal> animals = new ArrayList<Animal>(); public static List<Animal> getDogs(int count){
for(int i = 0; i<count ;i++){
animals.add(new Dog());
}
return animals;
} public static List<Animal> getCat(int count){
for(int i = 0; i<count ;i++){
animals.add(new Cat());
}
return animals;
}
}
5.AnimalFactoryTest.java
 package Builder;
 import java.util.List;
 import org.junit.Test;
 public class AnimalFactoryTest {
     @Test
     public void test() {
         List<Animal> animals = AnimalBuilder.getDogs(3);
         for(int i = 0; i<animals.size() ;i++){
             animals.get(i).bark();
         }
     }
 }
三、运行结果

Java-马士兵设计模式学习笔记-建造者模式的更多相关文章
- Java-马士兵设计模式学习笔记-命令模式
		
一.概述 命令模式 二.代码 1.Client.java public class Client { public void request(Server server){ server.addCom ...
 - Java-马士兵设计模式学习笔记-桥接模式
		
一.概述 1.桥接模式的应用情况:(1)两个维度扩展(2)排列组合 二.代码 1.Gift.java public class Gift { protected GiftImpl giftImpl; ...
 - Java-马士兵设计模式学习笔记-工厂模式-抽象工厂模式
		
一.概述 1.抽象工厂:当情况是需要产生一系列产品,若需更换产品,则要求一系列产品一起换,且要控制一系列产品的产生过程,此时可考虑抽象工厂模式.例:小明装修屋子,把电视.冰箱都替换掉,他这次需要把电视 ...
 - Java-马士兵设计模式学习笔记-工厂模式-简单工厂
		
一.概述 1.目标:要控制任意类型交通工具的生产模式 2.目标有两层意思(1)任意类型 (2)生产模式,所以对应的,要这两个层面上抽象(Movable,VehicleFactory),利用接口,实现多 ...
 - Java-马士兵设计模式学习笔记-策略模式-模拟 Comparator接口
		
续上一篇 <Java 模拟 Comparable接口> 一.Teacher类及Student类的比较大小方式是不固定的,比如老师除了比较职称外,还可比较工龄大小,年龄大小等.则定义Com ...
 - Java-马士兵设计模式学习笔记-迭代器模式-模仿Collectin ArrayList LinckedList
		
Java Iterator模式 Java Iterator模式, 模仿Collectin ArrayList LinckedList 一.有如下几个类 1.接口Collection.java 2.接口 ...
 - Java-马士兵设计模式学习笔记-代理模式-聚合与继承方式比较
		
一.概述 1.目标:要在Tank的move()方法做时间代理及日志代理(可以设想以后还要增加很多代理处理),且代理间的顺序可活更换 2.思路: (1)聚合:代理类聚合了被代理类,且代理类及被代理类都实 ...
 - Java-马士兵设计模式学习笔记-代理模式-动态代理 调用Proxy.newProxyInstance()
		
一.概述 1.目标:不自己写代理类,利用Proxy.newProxyInstance()动态生成 2.用到的知识点: (1)//编译源码,生成class,注意编译环境要换成jdk才有compiler, ...
 - Java-马士兵设计模式学习笔记-代理模式-动态代理 修改成可以任意修改代理逻辑
		
一.概述 1.目标:动态代理的代理逻辑可以任意修改 2.思路: (1)要把代理逻辑抽离,站在jvm的角度思考,应独立出InvocationHandler接口,并接收被代理的对象及方法作为参数invok ...
 
随机推荐
- P1689: [Usaco2005 Open] Muddy roads 泥泞的路
			
水题,模拟就行了,别忘了L>=r的时候直接更新下一个的L然后continue type node=record l,r:longint; end; var n,l,i,ans:longint; ...
 - [shell基础]——I/O重定向
			
文件标识符(FD) 1. Linux使用文件标识符(FD)来标识一个进程正在访问的特定文件 2. 当打开一个文件或创建一个文件时,Linux将返回一个文件标识符供其他操作引用 3. 文件标识符是一个小 ...
 - PBOC2.0与PBOC3.0的区别
			
2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...
 - multiple backgrounds
			
multiple backgrounds 多重背景,也就是CSS2里background的属性外加origin.clip和size组成的新background的多次叠加,缩写时为用逗号隔开的每组值:用 ...
 - 详谈socket请求Web服务器过程
			
最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的.因此,浏览器访问Web服务器的过程必须先有“连接建立”的发生. 而有人或许会问: ...
 - C Shell 中的特殊变量
			
恢复 $0,当前脚本的文件名 $n,传递给脚本或函数的参数,n是一个数字,表示第几个参数 $#,传递给脚本或函数的参数个数 $*,传递给脚本或函数的所有参数 $?,函数的返回值 $$,当前shell的 ...
 - php使用循环创建任意长度数组
			
实例:生成长度为5的偶数集合 <?php /** * [crtArr description] * @param [int] $start [循环开始变量] * @param [int] $le ...
 - PHP去除数组中重复数据的两个例子
			
例一: <?php$input = array("a" => "green","", "red"," ...
 - c++ ip地址的操作  c版
			
http://blog.csdn.net/cpp_funs/article/details/6988154 1.htonl ()和ntohl( ) u_long PASCAL FAR ntohl (u ...
 - shell ulimit -n
			
通过ulimit -n命令可以查看linux系统里打开文件描述符的最大值,一般缺省值是1024,