Thinking in java-21 单例模式和委托模式
2017-06-18 17:07
120 查看
1.单例模式 Singleton Pattern
对于class的修饰符只有2种,public和default。我们不能把class设置为private,但我们可以将一个类的构造函数设置为private。public class Singleton{ private Singleton(){ } private final static Singleton INSTANCE = new Singleton(); public static Singleton getInstance(){ return INSTANCE; } public void foo(){ //code here... } } //We can call foo() this way Singleton.getInstance().foo();
2.委托模式 Delegation Pattern
public class SpaceShipControls { void up(int velocity){} void down(int velocity){} void left(int velocity){} void down(int velocity){} void forward(int velocity){} void back(int velocity){} void turboBoost(){} } //One way to build a spaceship is to use inheritance. public class SpaceShip extends SpaceShipControls { private String name; public SpaceShip(String name) { this.name = name; } public static void main(String[] args) { SpaceShip spaceShip = new SpaceShip("NSEA Protector"); spaceShip.forward(100); } }
上面代码块实际上是说不通的,因为SpaceShip ‘is-a’ SpaceShipControls 不成立。更确切的方式是:SpaceShip contains SpaceShipControls。
public class SpaceShipDelegation { private String name; private SpaceShipControls controls = new SpaceShipControls(); public SpaceShipDelegation(String name) { this.name = name; } //delegated methods: public void up(int velocity) { controls.up(velocity); } public void down(int velocity) { controls.down(velocity); } public void left(int velocity) { controls.left(velocity); } public void right(int velocity) { controls.right(velocity); } public void forward(int velocity) { controls.forward(velocity); } public void back(int velocity) { controls.back(velocity); } public void turboBoost() { controls.turboBoost(); } public void main(String[] args) { SpaceShipDelegation protector = new SpaceShipDelegation("NSEA Protector"); protector.forward(100); } }
相关文章推荐
- Java设计模式偷跑系列(21)建模和实现享受metapatterns
- Java基础21--IO流--装饰设计模式--缓冲流
- java的委托机制 .....代理模式
- 《Java编程思想_ 深入理解java虚拟机_Thinking in java__Effiect java__设计模式》学习笔记7——泛型编程基础
- java委托设计模式之ComponentUI
- Java中的委托模式
- Java的委托模式
- JAVA设计模式(21) —装饰(Decorator)模式
- java的委托机制 .....代理模式
- c# 委托 事件 EventHandler 观察者模式 详解,以及和java的比较
- java实现事件委托模式的实例详解
- Java设计模式(21)行为型:访问者模式
- java中对委托模式的理解
- Java设计模式(21)——行为模式之备忘录模式(Memento)
- JAVA实现事件委托模式
- java中的委托和观察者模式
- java双亲委托模式classLoader
- JAVA设计模式-21-模板方法模式
- Java中的委托模式
- Thinking in java 读书笔记(六、接口:抽象类/方法,接口的属性和方法,策略模式,适配器模式,工厂模式)