常用设计模式学习
来源:互联网 发布:安全狗防sql注入原理 编辑:程序博客网 时间:2024/06/09 22:53
一、建造模式:是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。
代码:
public interface Builder { void buildPartA(); void buildPartB(); void buildPartC(); Product getResult(); } //具体建造工具 public class ConcreteBuilder implements Builder { Part partA, partB, partC; public void buildPartA() { //这里是具体如何构建partA的代码 }; public void buildPartB() { //这里是具体如何构建partB的代码 }; public void buildPartC() { //这里是具体如何构建partB的代码 }; public Product getResult() { //返回最后组装成品结果 }; } //建造者 public class Director { private Builder builder; public Director( Builder builder ) { this.builder = builder; } public void construct() { builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); } } public interface Product { } public interface Part { }测试代码:
下面是调用builder的方法: ConcreteBuilder builder = new ConcreteBuilder(); Director director = new Director( builder ); director.construct(); Product product = builder.getResult();
二、Adapter(适配器模式):定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份.
例如:假设我们要打桩,有两种类:方形桩 圆形桩.
public class SquarePeg{ public void insert(String str){ System.out.println("SquarePeg insert():"+str); } } public class RoundPeg{ public void insertIntohole(String msg){ System.out.println("RoundPeg insertIntoHole():"+msg); } }
如果我们需要两边继承,即继承SquarePeg 又继承RoundPeg,因为Java中不允许多继承,但是我们可以实现(implements)两个接口(interface)
public interface IRoundPeg{ public void insertIntoHole(String msg); } public interface ISquarePeg{ public void insert(String str); }下面是新的RoundPeg 和SquarePeg, 除了实现接口这一区别,和上面的没什么区别。
public class SquarePeg implements ISquarePeg{ public void insert(String str){ System.out.println("SquarePeg insert():"+str); } } public class RoundPeg implements IRoundPeg{ public void insertIntohole(String msg){ System.out.println("RoundPeg insertIntoHole():"+msg); } }下面是新的PegAdapter,叫做two-way adapter:
public class PegAdapter implements IRoundPeg,ISquarePeg{ private RoundPeg roundPeg; private SquarePeg squarePeg; // 构造方法 public PegAdapter(RoundPeg peg){this.roundPeg=peg;} // 构造方法 public PegAdapter(SquarePeg peg)(this.squarePeg=peg;) public void insert(String str){ roundPeg.insertIntoHole(str);} }
0 0
- 常用设计模式学习
- JAVA学习笔记(五十七)- 常用设计模式
- java学习之三种常用设计模式
- PHP常用的三种设计模式学习总结
- 常用的设计模式
- 一句话常用设计模式
- 常用设计模式
- 常用设计模式
- 常用设计模式收集
- 常用设计模式收集
- java常用设计模式
- java常用设计模式
- 常用设计模式
- 常用设计模式收集
- Java常用设计模式
- java常用设计模式
- 常用设计模式
- 常用设计模式二
- 第三方SDK:ShareSDK 快捷分享 + 登陆
- android开发笔记之adb命令详解
- 提升tomcat服务器性能的七条经验
- HDOJ1548(BFS)
- iOS uiwebview load request 出错
- 常用设计模式学习
- ARCGIS接口详细说明
- POJ2586(贪心)
- shader学习(二)
- CSS盒模型
- JavaScript基础——使用Canvas画图
- 《信息安全原理》复习笔记
- OpenCV
- 把Windows Server 2012 R2装成工作站