1、抽象工厂暴力摩托(带武器Weapon)游戏的两种模式:普通模式:开摩托、手拿AK47魔法模式:骑扫把、手拿魔法棒2024/5/22 周三12024/5/22 周三22024/5/22 周三3抽象工厂穿衣风格高富帅衣服 三叶草食物 哈根达斯屌丝衣服 班尼路食物 食堂画类图写Main入口2024/5/22 周三4public interface INews void Add(IUser u);void Remove(IUser u);void Notify();public interface IUser void Update();public class Seven implements IU
2、ser Overridepublic void Update()System.out.println(我的新闻列表已更新-Seven);观察者模型 练习订阅新闻有个新闻自动发布系统,用户可以订阅或取消订阅该系统,当该系统有新内容时,会通知给订阅它的用户。订阅用户可以通过update方法,获得新闻更新。画类图,写完整代码 2024/5/22 周三5public class News implements INews public String title,contex;ArrayList myUsers=new ArrayList();Overridepublic void Add(IUser
3、u)myUsers.add(u);Overridepublic void Remove(IUser u)myUsers.remove(u);Overridepublic void Notify()for(IUser u:myUsers)u.Update();public class XiaoMing public static void main(String args)IUser seven=new Seven();News news=new News();news.Add(seven);news.title=新标题;news.contex=新内容;news.Notify();2024/5/
4、22 周三6外观模式例子医院的系统子系统:挂号、看病、化验、缴费、取药不同的病人对应不同的子系统比如:一般病人:挂号、看病严重一些:挂号、看病、取药更严重一些:挂号、看病、化验、缴费使用外观模式2024/5/22 周三7代码2024/5/22 周三8代码2024/5/22 周三9原型模式例子抄作业以为好学生写完了作业其他同学直接复制把作业的姓名和学号改为自己的姓名学号2024/5/22 周三10作业类2024/5/22 周三11Main入口(Client端)2024/5/22 周三12问题若抄份作业需要1小时,那么10份作业需要?想要得到对象时间太久(对象的创建过程较为复杂并且有时候需要频繁创
5、建),如何解决?使用原型模式!Prototype pruttaip使作业产生副本,其余同学使用副本对象当自己的作业。Java班Net班2024/5/22 周三13如何产生副本-NET任何一个类都有一个方法MemberwiseClone(),可以得到副本对象浅复制(复制值类型,引用类型复制地址)深复制给有兴趣的同学去了解2024/5/22 周三14HomeWork更改-C#2024/5/22 周三15Main更改-C#2024/5/22 周三16如何产生副本-JAVAsuper.clone()可以得到当前调用类的对象的副本浅复制(复制值类型,引用类型复制地址)深复制给有兴趣的同学去了解2024/5/22 周三17HomeWork更改-JAVA2024/5/22 周三18JAVA中clone注意!在JAVA中需要被克隆的对象必须实现Cloneable接口否则视为不合法,会抛出不支持克隆的异常!实现接口后,clone执行的时候使用RTTI(run-time type identification)机制,动态得找到目前正在调用clone方法的引用,根据它的大小申请内存空间,实现浅复制。2024/5/22 周三19Main更改-JAVA2024/5/22 周三20